Tim*_*Tim 7 regex perl readability
我正在写一个Perl正则表达式来匹配字符串x bla和[x] bla.一种选择是/(?:x|\[x\]) bla/.这是不可取的,因为在现实世界中,x更复杂,所以我想避免重复它.
到目前为止,最好的解决方案是x输入变量并预编译正则表达式:
my $x = 'x';
my $re = qr/(?:$x|\[$x\]) bla/o;
Run Code Online (Sandbox Code Playgroud)
有更整洁的解决方案吗?在这种情况下,可读性比性能更重要.
这是可能的,但不是全部清洁.您可以使用条件子模式支持测试的事实,例如(?(N))检查第N个捕获子模式是否成功匹配.所以你可以使用一个表达式/(\[)?X(?(1)\])/来匹配'[X]'或'X'.