[英]Regex to match anything (including the empty string) except a specific given string
[英]Regexp to match anything (including empty string) except character
我有key.txt
key[]
_key_
_key[]
[]key
[]key_
(key,
key
并且我想将出现的事件与除_
之外的key
之前的任何内容进行匹配。
grep [^_]*key key.txt
给了我一切, grep [^_]?key key.txt
什么也没给我。
我预计
key[]
[]key
[]key_
(key,
key
您可以使用此grep
:
grep -E '(^|[^_])key' file
key[]
[]key
[]key_
(key,
key
这里:
-E
:启用扩展正则表达式(ERE)(^|[^_])
:这部分匹配任何不是_
的字符的行首key
: 匹配文本key
如果你有gnu-grep
那么你可以使用选项-P
(perl 正则表达式模式)使用否定的lookbehind:
grep -P '(?<!_)key' file
anubhava
解决方案的(更长的)替代方案:
grep 'key' key.txt | grep -v '_key'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.