【问题标题】:python re.compile match dosn't match backward slash in full path in windows [duplicate]python re.compile match不匹配windows中完整路径中的反斜杠[重复]
【发布时间】:2021-09-06 03:16:23
【问题描述】:

我有一个 Windows 完整路径,我尝试使用正则表达式进行验证。根据this 我必须添加 "\\\\\\\\" 但这不起作用。
我做错了什么?

import re

regex1 = re.compile('downloads\\\\test_dir\\\\sql\\\\my-ee.sql')  
s = "C:\x\xxx\temp\downloads\test_dir\sql\my-ee.sql"  
gg = regex1.match(s)

ggNone

【问题讨论】:

  • 你的代码有语法错误
  • match() 仅当整个字符串匹配模式时才会返回 smth,您可能想要使用 search()re.search(re.escape(r"downloads\test_dir\sql\my-ee.sql"), s)
  • 在这种形式中,s 应该包含\\-s。
  • @OlvinR​​oght 小修正:不是整个字符串。只从一开始。要匹配整个字符串,有 fullmatch
  • @Tomerikoo,是的,错过了,现在编辑为时已晚,谢谢提及。

标签: python python-3.x regex re


【解决方案1】:

所以有两件事:

  1. s 的分配应使用转义的反斜杠或作为原始字符串。我更喜欢后者:
s = r"C:\x\xxx\temp\downloads\test_dir\sql\my-ee.sql" 
  1. 您应该使用search 方法而不是match 来满足部分匹配。

然后,您可以在正则表达式中使用 \\\\,或者 - 我更喜欢 - 再次使用原始字符串:

import re

regex1 = re.compile(r'downloads\\test_dir\\sql\\my-ee.sql')  
s = r"C:\x\xxx\temp\downloads\test_dir\sql\my-ee.sql"  
gg = regex1.search(s)
print(gg)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-07
    • 1970-01-01
    • 2020-11-25
    • 1970-01-01
    • 2014-04-29
    • 1970-01-01
    • 2014-02-04
    相关资源
    最近更新 更多