繁体   English   中英

正则表达式-跨多行匹配任何字符

[英]Regex - Match any character across mutliple lines

我有一个HTML字符串,看起来像:

<img src="blah blah blah"><p> blah blah
blah blah blah blah blah blah
blah blah blah</p>

我如何使用正则表达式读取blah blah... 我尝试了(。+?),但无法正常工作,并搜索了google,但没有找到Python的解决方案。

谢谢!

对于使用正则表达式解析html的通常免责声明,这将起作用:

import re
match = re.search("<img[^>]*><p>([^<]*)</p>", subject)
if match:
    blahblah = match.group(1)
    print blahblah

说明

  • <img匹配文字字符
  • [^>]*匹配任何非>字符
  • ><p>匹配文字字符
  • ([^<]*)捕获没有任何字符< 1组(这是我们所希望的)
  • </p>匹配文字字符
  • match.group(1)包含我们的字符串

给你一个Java的例子:

public static void testRegExp() {
    try {
        String input = "<img src=\"blah blah blah\"><p> blah blah" +
    "\n blah blah blah blah blah blah" +
    "\nblah blah blah</p>";
        Pattern pMod = Pattern.compile("(blah\\s+)+");
        Matcher mMod = pMod.matcher(input);
        int beg = 0;
        while (mMod.find()) {
            System.out.println("--------------");
            System.out.println(mMod.group(0));
        }

    } catch(Exception ex) {
        ex.printStackTrace();
    }
}

输出为:

等等等等

等等等等等等等等等等

对于Python,我猜想regeular表达式是相似的。 祝你好运并尝试一下。

您也可以尝试使用(?s) DOTALL修饰符的以下代码,

>>> s = """<img src="blah blah blah"><p> blah blah
... blah blah blah blah blah blah
... blah blah blah</p>"""
>>> import re
>>> m = re.search(r'(?s)(?<=<p>).*?(?=<\/p>)', s).group(0)
>>> print m
 blah blah
blah blah blah blah blah blah
blah blah blah

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM