有人可以回答这个问题吗? 我正在尝试学习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")
谢谢, Sagar的
答案 0 :(得分: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']