我有這樣的正則表達式正則表達式沒有得到字符
\.*?\{\{([\w\s]+)\|([\w\s]+)\}\}
並正確捕捉這個詞是這樣的:
{{58afc8ed3688d3001cb8b043_1487915885599|data}}
但是,如果我把一個詞這樣
{{58afc8ed3688d3001cb8b043_1487915885599|data?}}
它無法捕獲它。
我應該如何捕捉後者?
我有這樣的正則表達式正則表達式沒有得到字符
\.*?\{\{([\w\s]+)\|([\w\s]+)\}\}
並正確捕捉這個詞是這樣的:
{{58afc8ed3688d3001cb8b043_1487915885599|data}}
但是,如果我把一個詞這樣
{{58afc8ed3688d3001cb8b043_1487915885599|data?}}
它無法捕獲它。
我應該如何捕捉後者?
\.*?\{\{([\w\s]+)\|([\w\s?]+)\}\}
應該做的伎倆。 \w\s
不會出現問號。
顯示如果我把其他字符那裏 – kohli
你知道哪些字符提前?如果你這樣做,也把它們放在最後的方括號之間。如果你不這樣做,你需要'。*'來保證比賽。如果你想要的只是空格,試試'\ S'。 –
你的兩個例子唯一的區別是你有一個額外的'?'字符在(或之後)第二組中。
siam的回答是正確的,但會導致非常廣泛的匹配,這可能不是您想要的。畢竟,在極端情況下,如果需要,可以用\{\{(.*)\|(.*)\}\}
替換整個正則表達式。
假設這只是你關心的一個問號,你可以:
([\w\s]+)
是添加到您可接受的字符的任何地方你的小組中([\w\s?]+)
([\w\s]+\?*)
([\w\s]+)
(這將允許 零或任意數量的尾隨問號)的([\w\s]+)\?*
當然捕捉它,如果你的意思是接受的不僅僅是問號,你可以簡單地保持同樣的方式將它們添加其它特殊字符組。
謝謝,我現在明白這背後的概念 – kohli
它不工作在我的替換功能在javascript – kohli
@kohli檢查更新的答案 – m87