[英]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.