Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.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 - Fatal编程技术网

Regex 正则表达式匹配所有不以开头的行==

Regex 正则表达式匹配所有不以开头的行==,regex,perl,Regex,Perl,这应该很简单,但我一直有麻烦。我想用perl编写一个正则表达式来匹配所有不以“==”开头的行。我创建了这个表达式: ^[^\=\=]* 这在我使用的正则表达式测试仪中运行良好,但当我运行perl脚本时,会出现一个错误,说明: POSIX语法[==]保留用于正则表达式中的未来扩展 脚本终止。我想我使用了一些错误的语法,但是我没有发现任何与此相关的东西。有人有更好的方法来匹配这些行吗?您的正则表达式不正确,例如,它以=a作为输入失败。 一种方法是使用与Perl兼容的正则表达式(PCRE):^(?!=

这应该很简单,但我一直有麻烦。我想用perl编写一个正则表达式来匹配所有不以“==”开头的行。我创建了这个表达式:

^[^\=\=]*

这在我使用的正则表达式测试仪中运行良好,但当我运行perl脚本时,会出现一个错误,说明:

POSIX语法[==]保留用于正则表达式中的未来扩展


脚本终止。我想我使用了一些错误的语法,但是我没有发现任何与此相关的东西。有人有更好的方法来匹配这些行吗?

您的正则表达式不正确,例如,它以
=a
作为输入失败。
一种方法是使用与Perl兼容的正则表达式(PCRE):
^(?!==)

您的正则表达式是不正确的,例如,它以
=A
作为输入失败。
一种方法是使用与Perl兼容的正则表达式(PCRE):
^(?!==)

您误解了字符类在正则表达式中的工作方式

字符类由方括号
[…]
分隔,通常与它所包含的任何一个字符相匹配。因此
[abc]
将匹配
a
b
c
,但仅匹配
aa
cbc
的第一个字符。您可能知道也可以使用范围,例如
[a-c]

您还可以像前面所做的那样对类进行求反,这样
[^a]
将匹配任何一个不是
a
的字符,例如
z
&
,但只匹配
zz
的第一个字符

在类中复制字符不会改变它匹配的内容,因此
[aardvark]
将恰好匹配
a
d
k
r
v
中的一个,并且相当于
[adkrv]

您的正则表达式模式使用字符类
[^\=\=]
。不需要转义等号,复制它也没有效果,因此您可以使用等价的
[^=]
,它将匹配除等号以外的任何单个字符
=

您收到该错误消息的原因是,字符类以
[=
开头,以
=]
结尾(只是
[=]
不算在内),保留用于尚未实现的特殊行为。如上所述,通常没有理由编写具有相同字符多次出现的字符类,因此不允许这种构造是合理的

有这样的说法吗


POSIX语法[==]保留给正则表达式中的未来扩展;标记为您误解了字符类在正则表达式中的工作方式

字符类由方括号
[…]
分隔,通常与它所包含的任何一个字符相匹配。因此
[abc]
将匹配
a
b
c
,但仅匹配
aa
cbc
的第一个字符。您可能知道也可以使用范围,例如
[a-c]

您还可以像前面所做的那样对类进行求反,这样
[^a]
将匹配任何一个不是
a
的字符,例如
z
&
,但只匹配
zz
的第一个字符

在类中复制字符不会改变它匹配的内容,因此
[aardvark]
将恰好匹配
a
d
k
r
v
中的一个,并且相当于
[adkrv]

您的正则表达式模式使用字符类
[^\=\=]
。不需要转义等号,复制它也没有效果,因此您可以使用等价的
[^=]
,它将匹配除等号以外的任何单个字符
=

您收到该错误消息的原因是,字符类以
[=
开头,以
=]
结尾(只是
[=]
不算在内),保留用于尚未实现的特殊行为。如上所述,通常没有理由编写具有相同字符多次出现的字符类,因此不允许这种构造是合理的

有这样的说法吗


POSIX语法[==]保留给正则表达式中的未来扩展;标记为从下面检查来自tchrist的答案从下面检查来自tchrist的答案谢谢您的答案。我明白为什么这比我做的更有意义了。谢谢你的回答。我明白为什么这比我做的更有意义。
unless ( /^==/ )
if ( not /^==/ )