正则表达式,看一个特定的字母是否总是跟着另一个特定的字母

时间:2013-10-10 14:20:14

标签: python regex

我有一个用户输入的单词。我想检查这个词是否符合以下规则。

规则:字母q总是用你写的。

user word : qeen

输出将是

not match with the rule.
edited word : queen

又一个例子:

user word : queue
matched with rule. no edit required.

2 个答案:

答案 0 :(得分:9)

这非常适合lookahead assertion

q(?=u)
仅当q后跟u时,

才匹配q(?!u) ,而

q

仅在{em>不后跟u时与>>> if re.search("q(?!u)", "qeen"): ... print("q found without u!") ... q found without u! 匹配。

所以:

>>> re.sub("q(?!u)", "qu", "The queen qarreled with the king")
'The queen quarreled with the king'

或者

Iraq

然而,像{{1}}这样的词呢?

答案 1 :(得分:1)

>>> 'q' in 'qeen'.replace('qu', '')
True
>>> 'q' in 'queen'.replace('qu', '')
False

>>> 'qeen'.replace('qu', 'q').replace('q', 'qu')
'queen'

$ python -m timeit -s"import re" 're.sub("q(?!u)", "qu", "The queen qarreled with the king")'
100000 loops, best of 3: 2.57 usec per loop
$ python -m timeit -s"'The queen qarreled with the king'.replace('qu', 'q').replace('q', 'qu')"
100000000 loops, best of 3: 0.0163 usec per loop