Ric*_*ick 13 python regex parsing
我知道,对于解析我理想情况下应该删除所有空格和换行符,但我只是这样做是为了快速修复我正在尝试的东西,我无法弄清楚为什么它不起作用..我已经包装了不同的文本区域使用像"#### 1"这样的包装器的文档,我试图基于此解析,但无论我尝试什么,它只是不工作,我认为我正在使用多行...任何建议表示赞赏
这根本不会返回任何结果:
string='
####1
ttteest
####1
ttttteeeestt
####2
ttest
####2'
import re
pattern = '.*?####(.*?)####'
returnmatch = re.compile(pattern, re.MULTILINE).findall(string)
return returnmatch
Run Code Online (Sandbox Code Playgroud)
Col*_*ert 24
多行不意味着.将匹配线回归,这意味着^与$被限制为只行
re.M re.MULTILINE
指定时,模式字符'^'匹配字符串的开头和每行的开头(紧跟在每个换行符之后); 并且模式字符'$'>在字符串的末尾和每行的末尾(紧接在每个>换行符之前)匹配.默认情况下,'^'仅匹配字符串的开头,'$'仅匹配字符串的>末尾,紧接在字符串末尾的换行符(如果有)之前.
re.S或re.DOTALL使.匹配甚至新线.
资源
leo*_*luk 15
尝试re.findall(r"####(.*?)\s(.*?)\s####", string, re.DOTALL)(re.compile当然也适用).
此正则表达式将返回包含节的编号和节内容的元组.
对于您的示例,这将返回[('1', 'ttteest'), ('2', ' \n\nttest')].
(顺便说一句:你的例子不会运行,对于多行字符串,请使用'''或""")