我有一个问题需要解决:
我需要匹配每个少于4个字符的单词,期望单词i,j,k和pom.I使reg exp找到大小小于4的所有单词 - [a-zA-Z] {1 ,3}但我不知道如何排除i,j,k和pom。我需要在一个reg exp中做到这一点。
非常感谢答案
答案 0 :(得分:0)
这样的东西?
$ cat b.txt
abcdef
abcd
abc
pom.
pom
i,j,k
$ grep -E '^([a-z]{1,3}|pom.|i,j,k)$' b.txt
abc
pom.
pom
i,j,k
说明:
*以上测试匹配行,您可以像-E -w -o
一样修改它以匹配行中的单词
*默认情况下,词pom
将匹配,因为它的长度为3 =小于4
*单词pom.
(以点结尾)将被排除,但由于正则表达式或操作(符号|
)
更新
$ grep -E '^([a-z]{1,3}|pom.|i|j|k)$' b.txt
答案 1 :(得分:0)
的更新强>
(?i)\b(?!pom|[ijk]\b)[a-z]{1,3}\b
(?i) # Inline modifier, case-insensitive
\b # word boundary
(?! pom | [ijk] \b ) # Assert not 'pom' nor single i, j or k
[a-z]{1,3} # 1 to 3 letters a-z
\b # word boundary