Python 用于查找Q后面不跟U的正则表达式
这是我的第一个问题:我需要搜索一个单词列表,找到任何后面没有“U”或“U”的单词。一个例子是伊拉克,但不是质量 我们刚刚在课堂上讨论了正则表达式,我不确定我的正则表达式是否能完成上述任务 我有下面的正则表达式Python 用于查找Q后面不跟U的正则表达式,python,regex,Python,Regex,这是我的第一个问题:我需要搜索一个单词列表,找到任何后面没有“U”或“U”的单词。一个例子是伊拉克,但不是质量 我们刚刚在课堂上讨论了正则表达式,我不确定我的正则表达式是否能完成上述任务 我有下面的正则表达式 r"Qq[^Uu]" 但我不确定是否有更好、更具蟒蛇风格的方法来实现上述目标 提前感谢您的指导 瓦西姆 或 使用此选项并应用ignorecase标志 或 使用此选项并应用ignorecase标志 您可以使用re.IGNORECASE标志简化正则表达式 >> pat=re
r"Qq[^Uu]"
但我不确定是否有更好、更具蟒蛇风格的方法来实现上述目标
提前感谢您的指导
瓦西姆
或
使用此选项并应用ignorecase
标志
或
使用此选项并应用ignorecase
标志
您可以使用
re.IGNORECASE
标志简化正则表达式
>> pat=re.compile(r"q([^u]|$)",re.IGNORECASE )
>>> pat.search('Iraq')
<_sre.SRE_Match object at 0xb7e7c9e0>
>>> pat.search('Quantum')
>>>
感谢NHAHDH的建议
负面展望。断言(?!u)
后面没有q
u
>>> pat=re.compile(r"q(?!u)",re.IGNORECASE )
>>> pat.search('Iraq')
<_sre.SRE_Match object at 0xb7f62de8>
>>> pat.search('Quantum')
>>>
pat=re.compile(r"(?i)q(?!u)")
而不是为re.compile
方法提供标志
感谢Avinash Raj的建议您可以使用
re.IGNORECASE
标志简化正则表达式
>> pat=re.compile(r"q([^u]|$)",re.IGNORECASE )
>>> pat.search('Iraq')
<_sre.SRE_Match object at 0xb7e7c9e0>
>>> pat.search('Quantum')
>>>
感谢NHAHDH的建议
负面展望。断言(?!u)
后面没有q
u
>>> pat=re.compile(r"q(?!u)",re.IGNORECASE )
>>> pat.search('Iraq')
<_sre.SRE_Match object at 0xb7f62de8>
>>> pat.search('Quantum')
>>>
pat=re.compile(r"(?i)q(?!u)")
而不是为re.compile
方法提供标志
多亏了阿维纳什·拉吉的建议另一种方法是匹配坏词,匹配并捕捉好词,就像这样
\w*qu\w*|(\w*q\w*)
另一种方法是匹配坏词,匹配并捕获好词,就像这样
\w*qu\w*|(\w*q\w*)
您测试过吗?它起作用了吗?@Waseem您能在发布预期输出的同时发布一个示例吗?如果输入是
Quran Iraq foo Iraq bar
你测试过它了吗?它起作用了吗?@Waseem您能在发布预期输出的同时发布一个示例吗?如果输入是Quran Iraq foo Iraq bar
,那么输出会是什么?可以使用负前瞻简化。@nhahdh是的,负前瞻会更好。这将增加答案。谢谢你这个pat=re.compile(r“q(?!u)”,re.IGNORECASE)
将被写成pat=re.compile(r“(?i)q(?!u)”)
@AvinashRaj。这是对答案的补充。谢谢,可以用消极的前瞻来简化。@NHAHDH是的,消极的前瞻会更好。这将增加答案。谢谢你这个pat=re.compile(r“q(?!u)”,re.IGNORECASE)
将被写成pat=re.compile(r“(?i)q(?!u)”)
@AvinashRaj。这是对答案的补充。谢谢,这种效果在某些情况下是不正确的,比如说,qu
和loneq
都出现在同一个单词中。那么它就不应该匹配和捕获,因为这个单词后面有一个q
和u
。请给出一个不正确的例子。据我所知,OP希望匹配一个单词,其中有q
的实例,后面没有u
。根据这种解释,qu
应该是匹配的。@nhahtdh我现在明白你的意思了,我把它解释成一句话中的noqu
。比如说,这种效果在某些情况下是不正确的,qu
和loneq
都出现在同一个单词中。那么它不应该匹配和捕获,因为单词后面有一个q
,后面跟着u
。请给出一个不正确的例子。据我所知,OP希望匹配一个单词,其中有q
的实例,后面没有u
。有了这个解释,quq
应该是匹配的。@nhahdh我现在明白你的意思了,我把它解释为一个词中没有qu
。在q
之前添加\w+?
有什么必要?AvinashRaj在q
之前可以有字母。OP想匹配一个词在\w+?
之前添加有什么必要?@AvinashRaj在q
之前可以有字母。OP想匹配一个词