正则表达式,用于搜索非特定字符序列

时间:2014-12-10 13:58:04

标签: regex bash

我正在寻找一个匹配" not-a-specific-of-characters"的正则表达式。一个解决方案突然出现在我面前(几年后!)我在Macintosh计算机上运行bash。

例如,我希望匹配单词 Path ,只要它没有单词 posix Posix 。这是我提出的正则表达式:

[^[:space:]]*([^x]|[^i]x|[^s]ix|[^o]six|[^Pp]osix)Path

我想问一下是否有更高效或更好的方法。这种方法可能会变得有些麻烦,而不是"不是"字符序列是。

1 个答案:

答案 0 :(得分:1)

Perl正则表达式具有方便的"look-around"功能。

perl -ne 'print if /(?<![pP]osix)Path' file

GNU grep有一个-P标志来启用perl兼容的正则表达式,但默认情况下OSX没有GNU工具。

一种简单的技术是过滤grep:

的输出
grep 'Path' file | grep -v '[pP]osixPath'