Python正则表达式:匹配多个反斜杠字符的模式匹配。

3
我有一个Python原始字符串,其中有5个反斜杠字符后跟着一个双引号。我正在尝试使用Python的re进行模式匹配。
输出必须打印出匹配的模式。此外,在模式前后输出两个字符。
import re
command = r'abc\\\\\"abc'
search_string = '.{2}\\\\\\\\\\".{2}'
pattern = re.compile(search_string)
ts_name = pattern.findall(command)
print ts_name

输出结果显示,
['\\\\\\\\"ab']

I expected

['bc\\\\\"ab']

异常情况:

1)前面多出了额外的字符 - 缺少了ab

2)神奇地,当输入字符串只包含五个反斜杠时,它会打印出八个反斜杠

2个回答

3
您可以简化(缩短)您的正则表达式,并使用“search”函数获取输出:
command = r'abc\\\\\"abc'
search_string = r'.{2}(?:\\){5}".{2}'
print re.compile(search_string).search(command).group()

输出:

bc\\\\\"ab

你的正则表达式也应该使用r前缀。


2

只需在您想要的部分周围添加一个捕获组:

command = r'a(bc\\\\\"ab)c'

并使用以下方式访问:

match.group(1)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接