用RegEx来匹配长度为n个字符但同时包含一个特定字母的单词?

问题描述 投票:0回答:1

我有一个长长的小写国家列表(例如:bali, united kingdom等)

我如何匹配其中所有长度正好是9个字母且同时包含字母 "i "的单词?

目前第一部分我已经做到了。

\b\w{9}\b

谢谢你的建议

EDIT:

所以我做了这个:

\b(?=.*i.*)\w{9}\b

但它不能与 grep -E '\b(?=.*i.*)\w{9}\b' countries.txt...我到底做错了什么?

regex match contains
1个回答
1
投票

你可以用正向查找来检查字符数,然后检查里面是否有i。

(?=^[\w\s]{9}$).*i.*

0
投票

如果你不能用sigle regex匹配,你应该用两个或更多的尝试。在这个语句中,grep检查长度和一般字符,然后检查i。

grep -E '(\w|\s){9}' regex.txt | grep -E 'i'

如果你希望更严格一些。

grep -E '(\w|\s){9}' regex.txt | grep -E 'i' | grep -E '\w+(\s\w+)*'

© www.soinside.com 2019 - 2024. All rights reserved.