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

时间:2014-07-31 02:16:30

标签: regex python-2.7

我有一个HTML字符串,如下所示:

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

如何使用正则表达式阅读blah blah...? 我试过(。+?)但它不起作用,并搜索谷歌但没有找到 Python 的解决方案。

谢谢!

3 个答案:

答案 0 :(得分:2)

通常使用正则表达式解析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)包含我们的字符串

答案 1 :(得分:0)

给你一个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();
    }
}

输出为:

blah blah

等等等等等等  等等等等等等等等 等等等等

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

答案 2 :(得分:0)

你可以尝试使用(?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