我正在嘗試使用此正則運算式在檔案中捕獲具有特殊語法的標簽:
([a-z0-9 >}\/])(\{(var)\:([a-z0-9\_\/\-\.] )([\?0-9] )*\})([a-z0-9 {<\/])
標簽看起來像:
{var:contactText}
但是正如您在我的正則運算式中看到的那樣,我想了解 {var:something} 之前和之后的內容。我的運算式作業正常,除非運算式單獨在一行中。我有m標志來防止這個問題,但這仍然不起作用。
實體:https : //regex101.com/r/6T6OJm/1/
我錯過了什么嗎?似乎是最后一部分([a-z0-9 {<\/])不接受換行符,那么解決方案是什么?
uj5u.com熱心網友回復:
像貓一樣,“多行”修飾符是一個虛假的朋友。m 修飾符并不意味著模式會神奇地在多行上運行,它只會改變^和$錨點的含義(從字串的開始/結束到行的開始/結束)。
您需要做的就是使用\s該類計算潛在的白色字符(還包括回車符\r和換行符\n)。
~
([a-z0-9 >}/])
\s* ( { (var) : ([a-z0-9_/.-] ) ([?0-9] )? } ) \s*
([a-z0-9 {</])
~xi
演示
請注意,模式中的許多字符不需要轉義。由于模式有點長,我使用了 x 修飾符來不考慮模式中的空格:它更具可讀性。
不確定所有捕獲組是否有用。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/378397.html
