未转义左支撑正则表达式错误

时间:2017-04-02 07:11:40

标签: regex perl ubuntu pam

我不是正则表达式的专家,无法想象我应该在这里改变什么。

我得到了这两个错误

正则表达式中未转义的左括号被弃用,在正则表达式中传递;在<-- HERE中的m/^(.*?)(\\)?\${ <-- HERE ([^{}]+)}(.*)$/标记为/usr/share/perl5/Debconf/Question.pm第72行。

正则表达式中未转义的左括号被弃用,在正则表达式中传递;在<-- HERE中的m/\${ <-- HERE ([^}]+)}/标记为/usr/share/perl5/Debconf/Config.pm第30行。

当我跳到第72行时,这就是我所看到的

while ($rest =~ m/^(.*?)(\\)?\${([^{}]+)}(.*)$/sg) {

2 个答案:

答案 0 :(得分:10)

这是一个弃用警告,表示代码将来会停止

如果你想在字面上匹配{,你应该逃避它。

换句话说,您可以通过将第一个{替换为\{来解决问题(使警告静音)。

答案 1 :(得分:0)

与其转义左括号或右括号,不如使用其unicode等效值?像这样:

while ($rest =~ m/^(.*?)(\\)?\$\x7B([^\x7B\x7D]+)\x7D(.*)$/sg) {

我有类似的问题,这为我解决了。