我是python和正则表达式的新手.我逐行搜索文件以发现## random_string ##,我希望能够在## s之间捕获random_string.
我尝试了两种模式,但没有运气= /
pattern1=r'[##]()[##]'
pattern2=r'\#{2}()\#{2}'
prog=re.compile(pattern1)
result=prog1.search(line)
if result:
print result.group(0)
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助=]
尝试使用:
'##(.*?)##'
Run Code Online (Sandbox Code Playgroud)
你的正则表达式的问题是你试图匹配##使用a 之间的空字符串(),你应该.*?用来匹配任何东西或者.+?匹配任何非空的东西.
你的第一个正则表达式[##]()[##]还有一个bug.字符类匹配单个字符,例如:[ab]匹配a或b但不匹配.
所以[##]不匹配##,实际上在字符类中有重复的字符是多余的,所以[##]与[#]它相同是相同的#.
你的第二个正则表达式'\#{2}()\#{2}'几乎是正确的,但对于空的匹配事物.还要注意,#不是元字符(如.,+,*),因此,您需要不是逃避它.所以你可以\放入\#,但让它不是一个错误.