我是否应该在Perl和ECMAScript兼容的正则表达式中转义括号括号(即]
,}
和)
)?
从this问题的答案看,我不能逃避]
括号,但我必须在}
和)
的情况下这样做(对于PCRE) )。当然,如果我想在(first\)|second)
或[ab\]]
等相应的正则表达式序列中使用它们,我必须逃避它们,但其他情况呢?
例如,我应该在以下情况下逃避它们吗?
正则表达式 - str\[]
输入字符串 - str[]
答案 0 :(得分:0)
用pgrep测试PCRE很容易:
echo 'str[]' | grep -P 'str\[]'
我在Chrome浏览器中测试了JS,我按 F12 进入控制台并尝试了
"str[]".match(/str\[]/)
答案 1 :(得分:0)
的Perl:
$ perl -wE'say "a]b" =~ /a]b/'
1
$ perl -wE'say "a]b" =~ /a\]b/'
1
$ perl -wE'say "a}b" =~ /a}b/'
1
$ perl -wE'say "a}b" =~ /a\}b/'
1
$ perl -wE'say "a)b" =~ /a)b/'
Unmatched ) in regex; marked by <-- HERE in m/a) <-- HERE / at -e line 1.
$ perl -wE'say "a)b" =~ /a\)b/'
1
因此]
和}
无需转义,但可能会被转义。必须转义)
。
请注意,之前不需要转义的某些{
现在需要在Perl中转义。但是,这种改变的原因并不适用于关闭括号。