我有一个用户输入的单词。我想检查这个词是否符合以下规则。
规则:字母q总是用你写的。
user word : qeen
输出将是
not match with the rule.
edited word : queen
又一个例子:
user word : queue
matched with rule. no edit required.
答案 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