我正在尝试构建一个正则表达式,匹配两个正斜杠之间的正则表达式.我的主要问题是正则表达式本身可以包含正斜杠,由反斜杠转义.我尝试用负面的lookbehind断言过滤掉它们(如果当前位置没有反弹,只匹配结束斜线),但是,现在我遇到的问题是我没有得到匹配,如果正则表达式本身实际上以转义反斜杠结尾.
测试程序:
#!/usr/bin/python
import re
teststrings=[
"""/hello world/""",
"""/string with foreslash here \/ and here\//""",
"""/this one ends with backlash\\\\/"""]
patt="""^\/(?P<pattern>.*)(?<!\\\\)\/$"""
for t in teststrings:
m=re.match(patt,t)
if m!=None:
print t,' => MATCH'
else:
print t," => NO MATCH"
Run Code Online (Sandbox Code Playgroud)
输出:
/hello world/ => MATCH
/string with foreslash here \/ and here\// => MATCH
/this one ends with backlash\\/ => NO MATCH
Run Code Online (Sandbox Code Playgroud)
如果当前位置只有一个反弹,而不是两个反弹,我如何修改断言?
或者有更好的方法来提取正则表达式?(注意,在实际文件中,我尝试解析行不仅包含正则表达式.我不能简单地搜索每行的第一个和最后一个斜杠,并将其中的所有内容都放在其中.)