含有换行符的正则表达式如何匹配?

2015-01-31 23:34:17 +08:00
 inevermore
例如
```python
s = '''
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 5px; background-color: #f5f5f5; padding-left: 5px; padding-right: 5px; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 5px" class="cnblogs_code">
<pre><span style="color: #000000">@count_time()
</span><span style="color: #0000ff">def</span><span style="color: #000000"> test():
sleep(</span>0.5<span style="color: #000000">)

</span><span style="color: #0000ff">if</span> <span style="color: #800080">__name__</span> == <span style="color: #800000">'</span><span style="color: #800000">__main__</span><span style="color: #800000">'</span><span style="color: #000000">:
test()</span></pre>
</div>
'''
```

想把div pre之间的片段弄出来,写到<div.*>\s*<pre>.* 就写不动了。
各位给支个招,谢谢!
15117 次点击
所在节点    Python
12 条回复
RIcter
2015-01-31 23:37:05 +08:00
\s\S
inevermore
2015-01-31 23:48:13 +08:00
@RIcter 解决了,为啥 . 和 \s组合不管用?
RIcter
2015-01-31 23:55:34 +08:00
@inevermore \S是各种空白字符,比如\n\t之类的,而\s是^\S
sneezry
2015-02-01 00:00:45 +08:00
楼主问题之外,div用非贪婪是不是更好一点?
SolidZORO
2015-02-01 00:47:44 +08:00
<div(.|\n)*</pre>

匹配包含\n在內的任何字符用 (.|\n)。
lujjjh
2015-02-01 02:26:59 +08:00
re.S
re.DOTALL
Make the '.' special character match any character at all, including a newline; without this flag, '.' will match anything except a newline.
dddd
2015-02-01 09:38:50 +08:00
编译标识

re.M (MULTILINE) 多行匹配,影响 ^ 和 &
dddd
2015-02-01 09:39:38 +08:00
@dddd 手快错 影响 ^ 和 $
dddd
2015-02-01 09:43:26 +08:00
@RIcter \S是各种空白字符????????????????????????????
RIcter
2015-02-01 09:45:50 +08:00
@dddd 噢噢噢噢噢才发现说反了OAQ…
居然一群人没有一个发现的orz
fising
2015-02-01 11:05:15 +08:00
@RIcter 我第一眼就发现你不对了。另外除了使用\s,还可以使用原声换行
sujin190
2015-02-01 11:41:21 +08:00
@dddd +1 多行匹配

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/167155

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX