Regex 未缩放左大括号正则表达式错误
我不是正则表达式的专家,也不知道我应该在这里改变什么 我得到这两个错误 正则表达式中未替换的左大括号已弃用,在正则表达式中传递;标记为Regex 未缩放左大括号正则表达式错误,regex,perl,ubuntu,pam,Regex,Perl,Ubuntu,Pam,我不是正则表达式的专家,也不知道我应该在这里改变什么 我得到这两个错误 正则表达式中未替换的左大括号已弃用,在正则表达式中传递;标记为这是一个弃用警告,指示代码将来将停止工作 如果你想逐字匹配一个{,你应该转义它 换句话说,您可以通过将第一个{替换为\{来解决问题(使警告静音),而不是转义左大括号或右大括号,使用其unicode等效值如何?如下所示: while($rest=~m/^(.*)(\\)?\$\x7B([^\x7B\x7D]+)\x7D(.*)$/sg){ 我遇到了类似的问题,这为我
这是一个弃用警告,指示代码将来将停止工作
如果你想逐字匹配一个{
,你应该转义它
换句话说,您可以通过将第一个{
替换为\{
来解决问题(使警告静音),而不是转义左大括号或右大括号,使用其unicode等效值如何?如下所示:
while($rest=~m/^(.*)(\\)?\$\x7B([^\x7B\x7D]+)\x7D(.*)$/sg){
我遇到了类似的问题,这为我解决了。让我猜测一下,因为您缺少任何有用的上下文:您在系统上使用的是较新的Perl版本,然后是系统附带的版本,现在您看到了由此引起的问题。现在,如果您不懂Perl,这些只是警告,您可以忽略。在任何情况下对于系统附带的任何脚本,最好使用系统附带的原始Perl。如果您了解Perl,可以通过转义正则表达式中的{
来修复警告,即\{
。非常感谢!这很有效。是的,我做了一次sudo apt升级,在我的Ubuntu 14.04上安装了一些更新的软件包。我正在慢慢地一个接一个地修复它们……这会影响我的samba或ldap吗?因为不知道具体的更改是什么,所以不知道它们可能有什么影响。逃避{
并不总是最好的解决方案。有时使用{,n}
而不是{0,n}
来表示0..n次重复。这过去是可行的,现在0不再是可选的。@cas,修复了…效果非常好!!
while ($rest =~ m/^(.*?)(\\)?\${([^{}]+)}(.*)$/sg) {