正则表达式匹配两个符号之间的任何内容

时间:2016-06-20 17:44:14

标签: regex python-3.x

尝试更多地了解 Python 中的正则表达式,我发现很难匹配两个符号之间的任何字符(包括换行符,制表符,空格等),包括那些符号

例如:

  • foobar89\n\nfoo\tbar; '''blah blah blah'8&^"'''需要匹配''blah blah blah'8&^"'''

  • fjfdaslfdj; '''blah\n blah\n\t\t blah\n'8&^"'''需要匹配'''blah\n blah\n\t\t blah\n'8&^"'''

(注意,使用\n\t符号表示文本文件中的换行符和制表符空格)

question之后,我尝试了 ^.*\'''(.*)\'''.*$ ,而 *?\'''(.*)\'''.* 没有成功。

有人可以指导我做错了什么吗?我也很感激任何简短的解释。

另外,为了理解转义特殊字符的概念,我想知道我是否通过替换这两个符号(例如从'''"""或{ {1}})在正则表达式中它仍然可以工作(对于相关的字符串)?

e.g。为了

  • ***需要匹配fjfdaslfdj; """blah\n blah\n\t\t blah\n'8&^"""

更新

代码我正在尝试测试正则表达式(从here采取和修改):

"""blah\n blah\n\t\t blah\n'8&^"""

1 个答案:

答案 0 :(得分:2)

你可以选择:

((['"]{3}).*?\2)

请参阅live running pythonlive running regex

  • ^.*\'''(.*)\'''.*$ =>你添加了一个开始/结束的锚点,在多线匹配需要的情况下不起作用
  • *?\'''(.*)\'''.* =>语法错误
  • re.compile(ur'(([\'"]{3}).*?\2)', re.MULTILINE | re.DOTALL) => re.DOTALL使.与新线匹配。