2017-04-02 77 views
2

我不是正则表达式的专家,无法确定我应该改变的地方。未转义的左大括号正则表达式错误

我得到这两个错误的正则表达式

转义的左括号已被弃用,通过正则表达式通过;标记为<-- HEREm/^(.*?)(\\)?\${ <-- HERE ([^{}]+)}(.*)$/ at /usr/share/perl5/Debconf/Question.pm line 72.

正则表达式中未转义的左大括号已被弃用,通过正则表达式传递;在/usr/share/perl5/Debconf/Config.pm线30

m/\${ <-- HERE ([^}]+)}/标志着<-- HERE当我跳到线72这是我看到

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

让我只是猜测,因为你错过了任何有用的上下文:你在你的系统上使用了一个更新的Perl版本,然后是系统附带的版本,现在你看到了由此造成的问题。现在,这些只是警告,如果你不了解Perl,你可以忽略它。在任何情况下,最好使用系统附带的原始Perl用于系统附带的任何脚本。如果你了解Perl,你可以通过转义正则表达式中的'{',即'\ {'。 –

+0

非常感谢!这工作。是的,我做了一个sudo apt-get升级,并在我的Ubuntu 14.04上安装了一些新的软件包。我正在慢慢尝试着逐个修复它们...... T_T这是否会影响我的桑巴舞或者ldap? – TheCabDriverCheatedMeToday

+0

由于不知道究竟发生了什么变化,因此未知它们可能具有哪些影响。 –

回答

5

这是一个弃用警告指示代码将在未来停止工作

如果您想从字面上匹配{,则应该将其转义。

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

+0

转义'{并不总是最好的解决方案。有时使用'{,n}'来代替'{0,n}'来指示0..n次重复。这用于工作,现在0不再是可选的。 – cas

+0

@cas,固定。 。 。 – ikegami

+0

作品完美! –