Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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正则表达式搜索或与转义字符比较不会返回true_Python_Regex_String Comparison - Fatal编程技术网

Python正则表达式搜索或与转义字符比较不会返回true

Python正则表达式搜索或与转义字符比较不会返回true,python,regex,string-comparison,Python,Regex,String Comparison,试图找出这些不可比较的原因: import re re.search( "Hello \\ World", "Hello \\ World" ) <> None or re.search( r"Hello \\ World", r"Hello \\ World" ) <> None 重新导入 重新搜索(“Hello\\World”、“Hello\\World”)无 或 重新搜索(r“Hello\\World”,r“Hello\\World”)无 我正在用代码中用于执行

试图找出这些不可比较的原因:

import re
re.search( "Hello \\ World", "Hello \\ World" ) <> None
or
re.search( r"Hello \\ World", r"Hello \\ World" ) <> None
重新导入
重新搜索(“Hello\\World”、“Hello\\World”)无
或
重新搜索(r“Hello\\World”,r“Hello\\World”)无

我正在用代码中用于执行操作的数据测试JSON格式的数据库返回的数据。我之所以使用re,是因为有时我想询问返回的内容是否包含部分短语。所以re给了我很大的灵活性。我原以为原始比较会起作用,但事实并非如此,当然,我不能期望数据库返回原始字符串。我无法控制数据库中的内容,因此我想找到一种方法来允许这些比较工作。非常感谢你的建议/想法。您的正则表达式中有几个问题

  • 默认情况下,正则表达式搜索区分大小写,您提交的单词大小写不同
  • 第一个示例:双反斜杠,不是原始的,在反斜杠中转换,在正则表达式中转义以下空格(转义空格等于空格:不做任何事情)。要想获得比赛,你必须

    打印(重新搜索(“Hello\\world”、“Hello world”、re.IGNORECASE))
    (注意字符串中要匹配的两个空格)

  • 第二个示例:双反斜杠,raw,翻译为反斜杠字符,反斜杠转义正则表达式中的以下空格。要获得匹配,您必须执行以下操作:

    print(重新搜索(r“Hello\\world”,r“Hello\world”,re.IGNORECASE))

  • 现在测试这两个语句:它是有效的

    <_sre.SRE_Match object; span=(0, 12), match='Hello  World'>
    <_sre.SRE_Match object; span=(0, 13), match='Hello \\ World'>
    
    
    

    (在编写正则表达式时始终使用
    r
    前缀,这就少了一个问题)

    你的意思是你得到了
    None
    ,你不知道为什么?请注意,反斜杠也是正则表达式中的特殊字符……”“我不能期望数据库返回原始字符串”:这是胡说八道。原始字符串用于文本字符串。字符串就是字符串。字符串应该是完全匹配的。我在第一个参数上用大写字母表示世界上的W。我了解原始弦,但这就是重点。我只是在来到这里之前找到了答案,看到让·弗朗索瓦提出了与我找到的相同的修复方法。双重逃跑为我解决了这个问题。IOW:搜索\\\\当原始文本中有两个反斜杠时,允许搜索成功完成。谢谢你们的帮助。