什么正则表达式可以用来匹配一个单词在某个点上的某个字符

2024-05-14 12:36:55 发布

您现在位置:Python中文网/ 问答频道 /正文

例如:

w for w in wordlist if re.search("..........")

假设你想要一个a在第二个位置,一个b在第五个位置,你知道它有8个字符长。你能用regex做这个吗?谢谢。你知道吗

示例输入,假设wordlist只有两个单词:[test][batpbuuu]

这个正则表达式将返回batpbuuu,因为它在第二个位置有一个a,在第五个位置有一个b。你知道吗


Tags: intestre示例forsearchif单词
3条回答

在正则表达式中,完全可以确保第2个字符是a,第5个字符是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

你可以做:

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']

我建议使用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'

相关问题 更多 >

    热门问题