1

有人可以回答这个吗?我正在尝试学习 reg 表达式(重新)模块,但我无法理解这个模块。我正在尝试使用正则表达式来捕获所有 3 种文件名格式

Python 3.4.3

>>> re.findall("file[\_-]1","file-1 file_1, file\1")
['file-1', 'file_1']
>>> 

为什么它不捕获文件\ 1?我确实尝试了另外两种模式,但都没有奏效:(

1. re.findall("file[\\_-]1","file-1 file_1, file\1")
2. re.findall(r"file[\_-]1","file-1 file_1, file\1")

谢谢,萨加尔

4

1 回答 1

1

反斜杠在正则表达式中也有意义;\_只是表示文字下划线,而不是下划线或反斜杠。相反,您需要r'...'(原始 Python 字符串) \\(正则表达式中的文字反斜杠)。请注意,您尝试搜索的字符串也应该是原始文字具有双反斜杠:

>>> "file-1 file_1, file\1"
'file-1 file_1, file\x01'  # probably not what you expected...
>>> r"file-1 file_1, file\1"
'file-1 file_1, file\\1'

因此,您可以使用:

>>> re.findall(r"file[\\_-]1", r"file-1 file_1, file\1")
        # note ^       ^       ^
['file-1', 'file_1', 'file\\1']
于 2015-07-21T09:47:07.320 回答