4
我想在正则表达式中匹配方括号字符以外的字符。如何在grep中的方括号内跳过方括号
正是我想要匹配一些特殊字符和其他一些人不这样做,所以我想将它们指定
# grep $'[^a-zA-Z0-9#\\/:!<>{},=?.()["_+;*\'&|$-]' file
这缺少]
,我试图与\]
,\\]
等逃逸,我读过[^]
之外的人,但我需要它!
我想在正则表达式中匹配方括号字符以外的字符。如何在grep中的方括号内跳过方括号
正是我想要匹配一些特殊字符和其他一些人不这样做,所以我想将它们指定
# grep $'[^a-zA-Z0-9#\\/:!<>{},=?.()["_+;*\'&|$-]' file
这缺少]
,我试图与\]
,\\]
等逃逸,我读过[^]
之外的人,但我需要它!
在^
之后立即放置]
。
下面是一个例子。输入文件 “富” 载:
foo
[
bar
]
baz
quux
我们执行命令:
grep '[^][]' foo
输出是:
foo
bar
baz
quux
从文档上bracket expressions in POSIX regular expressions:
的右括号(']')将失去其特殊意义g,并且如果在列表中首先出现,则在括号表达式中表示自己(如果有的话,在初始回调('^')之后)。
和也: ''
的特殊字符, '*', '[' 和 '\'(期间,星号,左支架,和反斜杠,分别地)将失去它们在括号表达式中的特殊含义。
你的表达是正确的,但你的解释不是。大多数正则表达式的实现不会将'\\'识别为集合中的转义字符,因此您必须将']'放在不属于语法部分的某处 - 直接放在'['或'[[ ^'。 –
@GuntramBlohm你是对的。这很有趣,我的手指在那一刻知道该做什么比我的大脑更好。我纠正了解释。 –
是的,它工作,但为什么需要这样?有一个规范? –