我不是正则表达式的专家,无法想象我应该在这里改变什么。
我得到了这两个错误
正则表达式中未转义的左括号被弃用,在正则表达式中传递;在<-- 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) {
答案 0 :(得分:10)
这是一个弃用警告,表示代码将来会停止 。
如果你想在字面上匹配{
,你应该逃避它。
换句话说,您可以通过将第一个{
替换为\{
来解决问题(使警告静音)。
答案 1 :(得分:0)
与其转义左括号或右括号,不如使用其unicode等效值?像这样:
while ($rest =~ m/^(.*?)(\\)?\$\x7B([^\x7B\x7D]+)\x7D(.*)$/sg) {
我有类似的问题,这为我解决了。