Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 未缩放左大括号正则表达式错误_Regex_Perl_Ubuntu_Pam - Fatal编程技术网

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) {