例如:
w for w in wordlist if re.search("..........")
让我们说你想要第二个位置的a和第5个位置的b,你知道它长8个字符。你能用正则表达式做到这一点吗?感谢。
示例输入,假设wordlist只有两个词:[test] [batpbuuu]
这个正则表达式将返回batpbuuu,因为它在第二个位置有一个a而在第五个位置有一个b。
答案 0 :(得分:3)
我建议re.match
(使用'.a.{2}b.{3}'
)而不是re.search
,因此它不会尝试在字符串中间找到这些字符,但它听起来你根本不需要正则表达式。
w for w in wordlist if len(w) == 8 and w[1] == 'a' and w[4] == 'b'
答案 1 :(得分:3)
你可以完全确保第二个字符是a,第五个字符是正则表达式中的b。你甚至不必为此使用正则表达式,但无论如何我都会显示它,因为那是你的要求。
以下是一个例子:
.a.{2}b
第一个点匹配任何字符(换行除外),接下来我们只匹配a,然后我们匹配任何字符(换行除外)2次,然后我们只匹配它有b。
kallb #matches
ja78b #matches
ja99k #doesnt match (missing a b)
jkksb #doesnt match (missing an a)
kj912 #doesnt match (missing both)
Regex101:https://regex101.com/r/wR6lR3/1
答案 2 :(得分:2)
你可以这样做:
re.search(r'^.a.{2}b.{3}$', i)
示例:强>
>>> w = ['test', 'batpbuuu', 'foobar', 'aachbfoo55', 'laghb678']
>>> [i for i in w if re.search(r'^.a.{2}b.{3}$', i)]
['batpbuuu', 'laghb678']
答案 3 :(得分:1)
您可以根据您的要求执行以下操作


 re.search('。a..b ...',word)
 代码>


 。表示任何字符


a - >在第二个位置
&#xA;&#xA;b --->在第5个locatoin < / p>&#XA;