正则表达式——匹配符合条件的词
Regular Expressions - matching words which meet the condition
我有问题要解决:
我需要匹配每个少于 4 个字符的单词,除了单词 i、j、k 和 pom.I 制作的 reg exp 可以找到大小小于 4 的所有单词 - [a-zA- Z]{1,3} 但我不知道如何排除 i、j、k 和 pom。我需要在一个 reg exp 中完成。
非常感谢您的回答
是这样的吗?
$ 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
将默认匹配,因为它的长度为三=小于 4
* 单词 pom.
(以点结尾)本来会被排除,但由于正则表达式或操作(符号 |
)
而被保存
更新
$ grep -E '^([a-z]{1,3}|pom.|i|j|k)$' b.txt
已更新
(?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
我有问题要解决:
我需要匹配每个少于 4 个字符的单词,除了单词 i、j、k 和 pom.I 制作的 reg exp 可以找到大小小于 4 的所有单词 - [a-zA- Z]{1,3} 但我不知道如何排除 i、j、k 和 pom。我需要在一个 reg exp 中完成。
非常感谢您的回答
是这样的吗?
$ 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
将默认匹配,因为它的长度为三=小于 4
* 单词 pom.
(以点结尾)本来会被排除,但由于正则表达式或操作(符号 |
)
更新
$ grep -E '^([a-z]{1,3}|pom.|i|j|k)$' b.txt
已更新
(?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