我是否应该在Perl和ECMAScript兼容的正则表达式中转义关闭括号字符

时间:2015-11-30 17:09:09

标签: javascript regex perl

我是否应该在Perl和ECMAScript兼容的正则表达式中转义括号括号(即]}))?

this问题的答案看,我不能逃避]括号,但我必须在})的情况下这样做(对于PCRE) )。当然,如果我想在(first\)|second)[ab\]]等相应的正则表达式序列中使用它们,我必须逃避它们,但其他情况呢?

例如,我应该在以下情况下逃避它们吗?

正则表达式 - str\[]

输入字符串 - str[]

2 个答案:

答案 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中转义。但是,这种改变的原因并不适用于关闭括号。