问题描述
|
我从网页源代码中获取了以下代码:
<span>41,396</span>
和以下正则表达式:
(\"<span>.*</span>\")
哪个返回
<span>New Users</span>
但是,我不想在结果中包含标签。我已经尝试了一些方法,但是正则表达式对我来说是新的。
不仅如此,我还需要为以下代码获取正则表达式:
<span>41,396</span>
</span>
<span class=\"levelColumn\">
<span>2,150</span>
</span>
<span class=\"xpColumn\">
<span>161,305,807</span>
我当时以为这可能涉及换行符等等,这就是为什么我将其分开放置的原因。
解决方法
您可以尝试类似
<span( class=\\\".+\\\")?>(.*)</span>
然后获取标签主体的捕获组2。但是请注意,正则表达式不利于解析HTML / XML。如果您嵌套<span>
标签会怎样?
如果输入的内容比显示的要复杂一点,请查找HTML解析器,然后尝试使用该解析器。
,您可以不同地使用捕获组来获取值,而不是标签+值
\"<span>(.*)</span>\"
如果正则表达式变得更复杂,请考虑以您选择的语言使用HTML解析库。
,据我所知,正则表达式将逐行查找,但是您可以使用一个表达式来解决。
试试:<span>(.*)</span>
您应该能够使用\\1
检索所需的信息
对于<span class=\"xpColumn\">
,它将不匹配,而match8ѭ将为空。
干杯:)