首页 > 解决方案 > 如何从输入字符串中匹配并打印连续的反斜杠和破折号(\-\-\-\-)?

问题描述

我有一个这样的字符串:

x = "\-\-\-\-\-\-\-\-\-\-\-\-\-"

字符串可以是任意数量的\-单位。

我正在使用以下代码进行匹配\-

x = "\-\-\-"
v = re.findall("[\\-]*", x)
print(v)

问题是,模式[\\-]*给出了结果:

 ['', '-', '', '-', '', '-', '']

如果使用三个斜线,则图案会更清晰一些,但结果仍然不对。

 v = re.findall("[\\\-]*", x)

结果如下:

['\\-\\-\\-', '']

所以?关于如何以反斜杠破折号反斜杠破折号\-\-形式获得它的任何想法?

标签: pythonregex

解决方案


re.findall尝试匹配捕获组(即括号中的正则表达式部分),并在列表中返回它们,而不是匹配的字符串。
在这种情况下,字符串"\-\-\-"中包含正则表达式元字符,因此它在您在列表中看到的结果中被转义。
因此,您只需要检索列表中的第一个元素即可以字符串形式获取它。

import re
x = '\-\-\-'
v = re.findall("[\\\-]*", x)[0]
print(v)

这给出了所需的输出:

\-\-\-

推荐阅读