簡體   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