我想找到第二个<BR>
标记并从那里开始搜索。我怎么能用正则表达式来做呢?
<BR>like <BR>Abdurrahman<BR><SMALL>Fathers Name</SMALL>
答案 0 :(得分:1)
将<BR>[^<]*(?=<BR>)
添加到正则表达式中,或者如果要在第二个<BR>
之后启动,请删除前瞻部分,例如:<BR>[^<]*<BR>
。
在第二个<BR>
之后但在第三个之前查找文字:<BR>[^<]*<BR>([^<]*)<BR>
这会在<BR>404<BR>waldo<BR>
中找到“waldo”。
注意:我专门使用了上面的内容而不是非贪婪的.*?
,因为一旦上述内容开始不起作用,您应该stop parsing HTML with regex和{{1当发生这种情况时会隐藏。但是,非贪婪量词也没有得到很好的支持,如果你愿意,你可以随时改变。
答案 1 :(得分:0)
这类问题的通常解决方案是使用“捕获组”。大多数正则表达式系统不仅可以提取整个匹配序列,还可以提取其中的子匹配。这是通过将表达式的一部分分组到(
和)
中来完成的。例如,如果我使用以下表达式(这是在JavaScript中;我不确定您想要使用哪种语言,但基本思想适用于大多数语言):
var string = "<BR>like <BR>Abdurrahman<BR><SMALL>Fathers Name</SMALL>";
var match = string.match(/<BR>.*?<BR>([a-zA-Z]*)/);
然后,我可以使用match[0]
获取匹配的所有内容,即"<BR>like <BR>Abdurrahman"
,或者我只能使用match[1]
获取括号内的部分,这样我{{1} }。
答案 2 :(得分:0)
假设您使用的是PHP,则可以使用explode
在<BR>
上拆分字符串
$str='<BR>like <BR>Abdurrahman<BR><SMALL>Fathers Name</SMALL>';
$s = explode("<BR>",$str,3);
$string = end($s);
print $string;
输出
$ php test.php
Abdurrahman<BR><SMALL>Fathers Name</SMALL>
然后你可以使用“$ string”变量并做任何你想做的事。
上述步骤也可以使用其他语言完成,也可以使用您的编程语言所使用的字符串拆分方法。
答案 3 :(得分:0)
这个正则表达式应该计算前两个<br />
s:
/(\s*<br\s*/?>\s*){2}/i
因此您应该用任何内容替换它们,或者使用preg_match
或RegExp.prototype.match
来提取参数。
在JavaScript中:
var afterReplace = str.replace( /(\s*<br\s*\/?>\s*){2}/i, '' );
在PHP中
$afterReplace = preg_replace( '/(\s*<br\s*\/?>\s*){2}/i', '', $str );
我只确定它能在PHP / JavaScript中运行,但它应该适用于所有内容......