【发布时间】:2020-09-01 08:21:44
【问题描述】:
我有一长串小写国家(例如巴厘岛、英国等)
如何匹配其中所有正好有 9 个字母长并且还包含字母“i”的单词?
到目前为止,我已经完成了第一部分:
\b\w{9}\b
感谢您的任何建议。
编辑:
所以我能够做到这一点:
\b(?=.*i.*)\w{9}\b
但它不适用于grep -E '\b(?=.*i.*)\w{9}\b' countries.txt...
我做错了什么?
【问题讨论】:
-
如果没有空格,Paul 的响应可以正常工作。圣马力诺(9 个字母 + 空格,总共 10 个)和斯里兰卡(8 个字母和一个空格,总共 9 个)这样的国家应该怎么办?其中任何一个也应该匹配吗?
-
您使用的是哪个环境?你有错误吗?是否支持正向前瞻?
-
-E表示 ERE,它不支持环视、非贪婪等...如果您使用的是GNU grep和PCRE可用,那么试试,grep -wP '(?=\w*i)\w{9}'(但它不适用于有空格等非单词字符的国家/地区) -
要使用长度为 9 个字符且包含
i的单词字符匹配单个单词,您可以使用grep -Po '\b(?=\w{9}\b)\w*i\w*\b' -
您在提问时需要提供更多详细信息。例如,我无法判断 - 是否每行显示一个国家/地区?还是单行?当国家名称可能包含非字母,如空格或连字符(例如几内亚比绍)时,“九个字母”是什么意思?