UPD:我需要檢查是否@if(Medellin)所以選擇“City Medellin”但是如果@if(null)不采取任何措施
這是我的模式:
(?<!@if\(null\)).*?@end$
測驗字串:
@if(Medellin) City Medellin @end
@if(null) City Medellin @end
我知道首先檢查右側,它需要所有字串:(
uj5u.com熱心網友回復:
您可以使用
@if\((?!null\))\w \)\s*(.*?)\s*@end\b
請參閱正則運算式演示。要跨行匹配,您需要(?s)@if\((?!null\))\w \)\s*(.*?)\s*@end\b或@if\((?!null\))\w \)\s*([\w\W]*?)\s*@end\b。
詳情:
@if\(- 一個@if(字串(?!null\))- 如果null)當前位置右側有字串則匹配失敗的負前瞻\w- 一個或多個字字符\)- 一個)字符\s*- 零個或多個空格(.*?)- 盡可能少的零個或多個字符\s*- 零個或多個空格@end\b-@end整個詞。
uj5u.com熱心網友回復:
這個斷言在第一個位置(?<!@if\(null\))為真,因為左邊沒有任何東西,所以.*?@end$將匹配整個字串,匹配兩個字串。
如果要使用lookbehind,必須先匹配括號之間的部分,然后才能使用否定lookbehind進行斷言:
@if\([^()]*\)(?<!\(null\))\s*(.*?)\s*@end$
@if\([^()]*\)匹配if后跟括號中的一部分(?<!\(null\))匹配該部分后,斷言直接左側的不是if(null)\s*(.*?)\s*@end匹配可選的空白字符,并在第 1 組中捕獲盡可能少的字符并匹配@end$字串結束
正則運算式演示
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/361856.html
標籤:正则表达式
上一篇:正則運算式匹配字串列和特定單詞
