可以使用什么正则表达式来匹配某个特定字符的单词

时间:2016-05-04 04:20:35

标签: python regex

例如:

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

让我们说你想要第二个位置的a和第5个位置的b,你知道它长8个字符。你能用正则表达式做到这一点吗?感谢。

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

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

4 个答案:

答案 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 - >在第二个位置





b --->在第5个locatoin < / p>&#XA;