正则表达式的全新。 希望以前没有回答过。对不起,如果有。
我的问题是尝试从字符串中的字符串中获取名称。 不知道我是否把头包裹在最好的选择之中。 这是总字符串块的小提取
<div class="txt-block" itemprop="contractors" itemscope
itemtype="home">
<h4 class="inline">Employs:</h4> <a href="/.../" itemprop='url'><span class="itemprop"
itemprop="name">Carp 1</span></a>, <a href="/.../"
itemprop='url'><span class="itemprop" itemprop="name">Carp
2</span></a>, <a href="/.../" itemprop='url'><span class="itemprop"
itemprop="name">Carp 3</span></a> <span
class="tots">|</span>
<span class="see-more inline"> <a href="/.../" itemprop='url'>See full options</a>
</span>
</div>
我想提取“鲤鱼1”,“鲤鱼2”,“鲤鱼3”。 字符串长度与我想要提取的项目数量不同。
也许甚至有一种更简单的方法可以做到这一点。 感谢所有帮助。
答案 0 :(得分:0)
这不是正则表达式问题。您需要通过HTML DOM和XPath进行HTML解析。
请参阅以下链接以获取参考:
答案 1 :(得分:0)
更新:这是在问题格式化之前发布的,以表明这是一个关于解析HTML的问题。
此正则表达式假设您正在解析纯文本字符串,如:
Employs: carp1, carp2, carp3 | blah blah...
一般来说,您不应该使用正则表达式来解析HTML。但是,如果您使用其他方法首先删除所有HTML标记,则可以在生成的纯文本上使用此方法。
通常,最好通过两个步骤完成:
首先获取所需字符串的部分:
my $carps;
if ($string =~ /Employs:\s*([^|]+)/)
{
$carps = $1;
}
然后从匹配的部分中取出每个项目。如果需要,你可以使用正则表达式,但在这种情况下,它看起来好像只需一个简单的拆分就足够了:
my @carps = split /,\s*/, $carps;
(以Perl为例,但这种方法适用于任何语言)。
答案 2 :(得分:0)
由于您要搜索的字符串包含在带有class和item属性的span标记之间:
<span class="itemprop" itemprop="name">STRING</span>
您可以使用以下正则表达式:
<span.*?(?:itemprop\s*=\s*"\s*name\s*"\s*)?class\s*=\s*"\s*itemprop\s*"\s*(?:itemprop\s*=\s*"\s*name\s*"\s*)?>(.*?)<\/span>
在action中查看并附带一些解释,并且不要忘记正则表达式修饰符。
答案 3 :(得分:0)
使用一些xml解析器。对于示例程序,请使用以下链接
http://www.codeproject.com/Articles/4826/XML-File-Parsing-in-VB-NET