Python的正则表达式3.4

时间:2015-07-21 09:41:15

标签: python regex python-3.4 python-module rawstring

有人可以回答这个问题吗? 我正在尝试学习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的

1 个答案:

答案 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']