如果有人能帮我理解以下内容,我将非常感激。
=~/(?<![\w.])($val)(?![\w.])/gi)
这是我接受的,但我不明白这一点。
回顾:(?=a)
代表前瞻,?!
代表负向前瞻,?<=
和?<!
代表背后照(分别为正面和负面)。
答案 0 :(得分:2)
正则表达式似乎搜索$val
(即与变量$val
的内容相匹配的字符串)不包围字词或点。
将$val
放入括号中会记住$1
中对应的匹配部分。
有关详细信息,请参阅perlre。
请注意,=~
不是正则表达式的一部分,它是&#34;绑定运算符&#34;。
同样,gi)
是更大的一部分。 g
表示匹配发生全局,根据发生匹配的上下文具有不同的效果,i
使匹配大小写不敏感(这只能影响$ val)。可能整个表达式都在括号中,但是我们无法看到开头的那个。
答案 1 :(得分:1)
将(?<!PAT)
视为“未紧接文本匹配PAT
”。
将(?!PAT)
视为“未紧跟文本匹配PAT
”。
答案 2 :(得分:0)
答案 3 :(得分:0)
定义$ val,然后观察正则表达式引擎使用rxrx - 命令行REPL和Regexp :: Debugger的包装器
它显示这样的输出但是颜色
Matched
|
VVV
/(?<![\w.])(dog)(?![\w.])/
|
V
'The quick brown fox jumps over the lazy dog'
^^^
[Visual of regex at 'rxrx' line 0] [step: 189]
它也提供了这样的描述
(?<! # Match negative lookbehind
[\w.] # Match any of the listed characters
) # The end of negative lookbehind
( # The start of a capturing block ($1)
dog # Match a literal sequence ("dog")
) # The end of $1
(?! # Match negative lookahead
[\w.] # Match any of the listed characters
) # The end of negative lookahead