Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.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重新编译卷曲引号问题_Python_Regex - Fatal编程技术网

Python重新编译卷曲引号问题

Python重新编译卷曲引号问题,python,regex,Python,Regex,我目前正在编写一个应用程序,它使用一个框架来匹配某些短语,目前它应该匹配以下正则表达式模式: Say \"(.*)\" 然而,我注意到,我的用户抱怨他们的操作系统有时会复制并粘贴“卷曲引号”,结果是用户提供了以下句子: Say "Hello world!" <-- Matches Say “Hello world!” <-- Doesn't match! 说“Hello world!”您可以在正则表达式中包含卷曲引号: Say [\"“”](.*)[\"“”] 作为可以在Pyt

我目前正在编写一个应用程序,它使用一个框架来匹配某些短语,目前它应该匹配以下正则表达式模式:

Say \"(.*)\"
然而,我注意到,我的用户抱怨他们的操作系统有时会复制并粘贴“卷曲引号”,结果是用户提供了以下句子:

Say "Hello world!" <-- Matches
Say “Hello world!” <-- Doesn't match!

说“Hello world!”您可以在正则表达式中包含卷曲引号:

Say [\"“”](.*)[\"“”]
作为可以在Python repl中复制的内容,它是这样的:

>>> import re
>>> test_str = r'"Hello"'
>>> reg = r'["“”](.*)["“”]'
>>> m = re.search(reg, test_str)
>>> m.group(1)
'Hello'
>>> test_str = r'“Hello world!”'
>>> m = re.search(reg, test_str)
>>> m.group(1)
'\x80\x9cHello world!\xe2\x80'

作为Kyle答案的替代方案,您可以通过替换卷曲引号为当前正则表达式准备字符串:
string.replace(“,”).replace(“,”)

您的意思是忽略,还是将其视为直接引号?@ShadowFlame将其视为同一事物,eseentialy您可以发布您正在使用的当前匹配项,还是可以使用的代码示例?python版本和我想的一样,我正在使用一个第三方库,它在内部某处使用
re.compile
,这意味着我不能在匹配之前访问字符串,所以这意味着只有在匹配之后才能访问字符串。如果没有,会发生什么?我只是无法知道用户输入了该文本,这就是为什么模式不匹配是一个问题
>>> import re
>>> test_str = r'"Hello"'
>>> reg = r'["“”](.*)["“”]'
>>> m = re.search(reg, test_str)
>>> m.group(1)
'Hello'
>>> test_str = r'“Hello world!”'
>>> m = re.search(reg, test_str)
>>> m.group(1)
'\x80\x9cHello world!\xe2\x80'