我有一个用户输入的单词。我想检查这个词是否满足以下规则。
规则:字母 q 总是和 u 一起写。
user word : qeen
输出将是
not match with the rule.
edited word : queen
再举一个例子:
user word : queue
matched with rule. no edit required.
这非常适合前瞻断言:
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
呢?
>>> '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