尝试更多地了解 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&^"""
答案 0 :(得分:2)
你可以选择:
((['"]{3}).*?\2)
请参阅live running python或live running regex
^.*\'''(.*)\'''.*$
=>你添加了一个开始/结束的锚点,在多线匹配需要的情况下不起作用*?\'''(.*)\'''.*
=>语法错误re.compile(ur'(([\'"]{3}).*?\2)', re.MULTILINE | re.DOTALL)
=> re.DOTALL
使.
与新线匹配。