检查正则表达式

时间:2017-11-15 19:57:46

标签: python regex pycharm

表达式是:

re.search("(%s)\\(%d)([0-9]+)".format(newspaper, year2))

其中newspaper是一个字符串,year2是一个整数。

而不是将\\解释为\字符的转义,PyCharm将其解释为转义为(并警告我在(%d)中有一个不匹配的右括号。它还突出了橙色的左括号。当我用\\\替换它时,没有警告,但我无法找到与此正则表达式匹配的内容。

这是\应该如何转义,还是我错过了另一个角色?

2 个答案:

答案 0 :(得分:2)

你需要把它变成一个原始字符串。

print(prod)被解释为字符串中的单个转义斜杠,它将转义\\,因此PyCharm正确地将其报告为错误。

所以,做一个:

(

另外,你可能意味着:

r"(%s)\\(%d)([0-9]+)"
# or
"(%s)\\\\(%d)([0-9]+)"

答案 1 :(得分:1)

根据:https://regex101.com/

你是对的,\\应该逃避\

尝试在正则表达式字符串之前添加r并编译它,例如:

regex = re.compile(r"(%s)\\(%d)([0-9]+)".format(newspaper, year2))
found = re.search(regex, stringy_thing)

然后,您可以使用group方法探测返回的found项目; regex101还会在右上方的窗格中显示捕获组