Python正则表达式匹配:## ##

nub*_*bme 2 python regex

我是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)

谢谢你的帮助=]

cod*_*ict 6

尝试使用:

'##(.*?)##'
Run Code Online (Sandbox Code Playgroud)

你的正则表达式的问题是你试图匹配##使用a 之间的空字符串(),你应该.*?用来匹配任何东西或者.+?匹配任何非空的东西.

你的第一个正则表达式[##]()[##]还有一个bug.字符类匹配单个字符,例如:[ab]匹配ab但不匹配.
所以[##]不匹配##,实际上在字符类中有重复的字符是多余的,所以[##][#]它相同是相同的#.

你的第二个正则表达式'\#{2}()\#{2}'几乎是正确的,但对于空的匹配事物.还要注意,#不是元字符(如.,+,*),因此,您需要不是逃避它.所以你可以\放入\#,但让它不是一个错误.