Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 用于查找Q后面不跟U的正则表达式_Python_Regex - Fatal编程技术网

Python 用于查找Q后面不跟U的正则表达式

Python 用于查找Q后面不跟U的正则表达式,python,regex,Python,Regex,这是我的第一个问题:我需要搜索一个单词列表,找到任何后面没有“U”或“U”的单词。一个例子是伊拉克,但不是质量 我们刚刚在课堂上讨论了正则表达式,我不确定我的正则表达式是否能完成上述任务 我有下面的正则表达式 r"Qq[^Uu]" 但我不确定是否有更好、更具蟒蛇风格的方法来实现上述目标 提前感谢您的指导 瓦西姆 或 使用此选项并应用ignorecase标志 或 使用此选项并应用ignorecase标志 您可以使用re.IGNORECASE标志简化正则表达式 >> pat=re

这是我的第一个问题:我需要搜索一个单词列表,找到任何后面没有“U”或“U”的单词。一个例子是伊拉克,但不是质量

我们刚刚在课堂上讨论了正则表达式,我不确定我的正则表达式是否能完成上述任务

我有下面的正则表达式

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
和lone
q
都出现在同一个单词中。那么它就不应该匹配和捕获,因为这个单词后面有一个
q
u
。请给出一个不正确的例子。据我所知,OP希望匹配一个单词,其中有
q
的实例,后面没有
u
。根据这种解释,
qu
应该是匹配的。@nhahtdh我现在明白你的意思了,我把它解释成一句话中的no
qu
。比如说,这种效果在某些情况下是不正确的,
qu
和lone
q
都出现在同一个单词中。那么它不应该匹配和捕获,因为单词后面有一个
q
,后面跟着
u
。请给出一个不正确的例子。据我所知,OP希望匹配一个单词,其中有
q
的实例,后面没有
u
。有了这个解释,
quq
应该是匹配的。@nhahdh我现在明白你的意思了,我把它解释为一个词中没有
qu
。在
q
之前添加
\w+?
有什么必要?AvinashRaj在
q
之前可以有字母。OP想匹配一个词在
\w+?
之前添加
有什么必要?@AvinashRaj在
q
之前可以有字母。OP想匹配一个词