我是正则表达式的初学者。 我需要这样做:
wanna match : (bkz: bakınız)
wanna match : (bkz:falan filan)
wanna match : (bkz: falan filan)
wanna match : (bkz: sen kimsin?)
wanna match : (bkz: ali ata bak)
wanna match : (bkz : selam)
wanna match : (bkz: ŞEYTAN)
wanna match : (bkz:ateş!)
wanna match : (bkz: ali)
wanna match : (bkz: ALİCAN)
wanna match : (bkz: ali ata bak)
wanna match : (bkz:a)
wanna match : (bkz ali)
wanna match : (bkz. deneme)
DONT WANNA PARSE : (bkz : http://google.com.tr)
DONT WANNA PARSE : (bkz: )
DONT WANNA PARSE :(bkz. (bkz: sss))
DONT WANNA PARSE :(bkz (bkz. (bkz: sss)))
到目前为止我的正则表达式:/(?<!(?:bkz: ))(?:\(bkz.?[:;\. ]?)([\w şŞüÜçÇıİğĞöÖ?!]+)\)/gmi
现场直播:http://regex101.com/r/pK6yZ1/4
我需要做什么?
答案 0 :(得分:0)
你可以试试下面的正则表达式,
^(?!.*?bkz:\s*\))(?:(?!bkz[:;. ]).)*?(?:\(bkz.?[:;\. ]?)([\w şŞüÜçÇıİğĞöÖ?!]+)\)
<强>解释强>
^
断言我们刚开始。(?!.*?bkz:\s*\))
断言不会有bkz:
后跟零个或多个空格以及)
符号。 (?:(?!bkz[:;. ]).)*?
匹配任何char但不是bkz[; :.]
零次或多次。这可确保之前不存在任何bkz
。
(?:\(bkz.?[:;\. ]?)
匹配bkz
以及以下可选字符以及来自清单列表中的以下可选字符。
([\w şŞüÜçÇıİğĞöÖ?!]+)
从给定列表中捕获一个或多个字符。
答案 1 :(得分:0)
试试这个:
/(?<!(?:\(bkz[ \.][ \.]))\(bkz ?[:;\. ] ?((?:[\wşŞüÜçÇıİğĞöÖ?!] ?)+)\)/gmi
可以看作是
(?<!(?:\(bkz[ \.][ \.]))
- &gt;不要匹配以bkz开头的单词\(bkz ?[:;\. ] ?
- &gt;寻找有bkz和分隔符的单词((?:[\wşŞüÜçÇıİğĞöÖ?!] ?)+))
- &gt;后跟一个或多个单词