V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
inevermore
V2EX  ›  Python

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

  •  
  •   inevermore · 2015-01-31 23:34:17 +08:00 · 15089 次点击
    这是一个创建于 3344 天前的主题,其中的信息可能已经有所发展或是发生改变。
    例如
    ```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>.* 就写不动了。
    各位给支个招,谢谢!
    12 条回复    2015-02-01 11:41:21 +08:00
    RIcter
        1
    RIcter  
       2015-01-31 23:37:05 +08:00 via iPad   ❤️ 1
    \s\S
    inevermore
        2
    inevermore  
    OP
       2015-01-31 23:48:13 +08:00
    @RIcter 解决了,为啥 . 和 \s组合不管用?
    RIcter
        3
    RIcter  
       2015-01-31 23:55:34 +08:00 via iPad
    @inevermore \S是各种空白字符,比如\n\t之类的,而\s是^\S
    sneezry
        4
    sneezry  
       2015-02-01 00:00:45 +08:00
    楼主问题之外,div用非贪婪是不是更好一点?
    SolidZORO
        5
    SolidZORO  
       2015-02-01 00:47:44 +08:00   ❤️ 2
    <div(.|\n)*</pre>

    匹配包含\n在內的任何字符用 (.|\n)。
    lujjjh
        6
    lujjjh  
       2015-02-01 02:26:59 +08:00 via Android
    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
        7
    dddd  
       2015-02-01 09:38:50 +08:00
    编译标识

    re.M (MULTILINE) 多行匹配,影响 ^ 和 &
    dddd
        8
    dddd  
       2015-02-01 09:39:38 +08:00
    @dddd 手快错 影响 ^ 和 $
    dddd
        9
    dddd  
       2015-02-01 09:43:26 +08:00
    @RIcter \S是各种空白字符????????????????????????????
    RIcter
        10
    RIcter  
       2015-02-01 09:45:50 +08:00 via iPhone
    @dddd 噢噢噢噢噢才发现说反了OAQ…
    居然一群人没有一个发现的orz
    fising
        11
    fising  
       2015-02-01 11:05:15 +08:00 via iPad
    @RIcter 我第一眼就发现你不对了。另外除了使用\s,还可以使用原声换行
    sujin190
        12
    sujin190  
       2015-02-01 11:41:21 +08:00
    @dddd +1 多行匹配
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2704 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 41ms · UTC 15:35 · PVG 23:35 · LAX 08:35 · JFK 11:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.