我有一个HTML字符串,如下所示:
<img src="blah blah blah"><p> blah blah
blah blah blah blah blah blah
blah blah blah</p>
如何使用正则表达式阅读blah blah...
?
我试过(。+?)但它不起作用,并搜索谷歌但没有找到 Python 的解决方案。
谢谢!
答案 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();
}
}
对于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