-4

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

规则:字母 q 总是和 u 一起写。

user word : qeen

输出将是

not match with the rule.
edited word : queen

再举一个例子:

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

2 回答 2

10

这非常适合前瞻断言

q(?=u)

q仅当 a 后跟 时才匹配u,而

q(?!u)

q仅当a 后面跟. 时才匹配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呢?

于 2013-10-10T14:23:33.850 回答
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
于 2013-10-10T15:02:37.550 回答