Nic*_*ner 16 regex negative-lookahead
以下正则表达式在子串FTW和ODP之间找到文本.
/FTW(((?!FTW|ODP).)+)ODP+/
Run Code Online (Sandbox Code Playgroud)
什么是(?!...... )怎么办?
gna*_*arf 29
(?!regex)是一个零宽度的负向前瞻.它将测试当前光标位置和前进的字符,测试它们与提供的正则表达式不匹配,然后将光标返回到它开始的位置.
整个正则表达式:
/
FTW # Match Characters 'FTW'
( # Start Match Group 1
( # Start Match Group 2
(?!FTW|ODP) # Ensure next characters are NOT 'FTW' or 'ODP', without matching
. # Match one character
)+ # End Match Group 2, Match One or More times
) # End Match Group 1
OD # Match characters 'OD'
P+ # Match 'P' One or More times
/
Run Code Online (Sandbox Code Playgroud)
所以 - 寻找FTW,然后捕获,同时寻找ODP+结束我们的字符串.还要确保数据之间FTW和之间ODP+不包含FTW或ODP
mko*_*yak 19
来自perldoc:
一个零宽度负先行断言.例如,
/foo(?!bar)/匹配任何未出现"foo"的"bar".但请注意,前瞻和后视不是一回事.你不能用它来做后卫.如果你正在寻找一个没有"
foo" 之前的"酒吧",那就/(?!foo)bar/不会做你想做的事.那是因为(?!foo)只是说下一件事不能是"foo" - 而事实并非如此,它是一个"酒吧",所以"foobar"会匹配.你必须做那样的事情/(?!foo)...bar/.我们说"喜欢",因为你的"bar"之前没有三个字符.你可以这样说:/(?:(?!foo)...|^.{0,2})bar/.有时候说它更容易:
if (/bar/ && $` !~ /foo$/)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7279 次 |
| 最近记录: |