表达式是:
re.search("(%s)\\(%d)([0-9]+)".format(newspaper, year2))
其中newspaper
是一个字符串,year2
是一个整数。
而不是将\\
解释为\
字符的转义,PyCharm将其解释为转义为(
并警告我在(%d)
中有一个不匹配的右括号。它还突出了橙色的左括号。当我用\\\
替换它时,没有警告,但我无法找到与此正则表达式匹配的内容。
这是\
应该如何转义,还是我错过了另一个角色?
答案 0 :(得分:2)
你需要把它变成一个原始字符串。
print(prod)
被解释为字符串中的单个转义斜杠,它将转义\\
,因此PyCharm正确地将其报告为错误。
所以,做一个:
(
另外,你可能意味着:
r"(%s)\\(%d)([0-9]+)"
# or
"(%s)\\\\(%d)([0-9]+)"
答案 1 :(得分:1)
你是对的,\\
应该逃避\
尝试在正则表达式字符串之前添加r
并编译它,例如:
regex = re.compile(r"(%s)\\(%d)([0-9]+)".format(newspaper, year2))
found = re.search(regex, stringy_thing)
然后,您可以使用group
方法探测返回的found
项目; regex101还会在右上方的窗格中显示捕获组。