Regex 正则表达式:从第二个开始

Regex 正则表达式:从第二个开始,regex,Regex,我想找到第二个标记并从那里开始搜索。我如何使用正则表达式来实现它 <BR>like <BR>Abdurrahman<BR><SMALL>Fathers Name</SMALL> 像父亲的名字 解决这类问题的常用方法是使用“捕获组”。大多数正则表达式系统不仅允许提取整个匹配序列,还允许提取其中的子匹配。这是通过将表达式的一部分分组到(和)中来实现的。例如,如果我使用以下表达式(这是在JavaScript中;我不确定您希望使用哪种语言

我想找到第二个

标记并从那里开始搜索。我如何使用正则表达式来实现它

<BR>like <BR>Abdurrahman<BR><SMALL>Fathers Name</SMALL>

像父亲的名字


解决这类问题的常用方法是使用“捕获组”。大多数正则表达式系统不仅允许提取整个匹配序列,还允许提取其中的子匹配。这是通过将表达式的一部分分组到
中来实现的。例如,如果我使用以下表达式(这是在JavaScript中;我不确定您希望使用哪种语言,但基本思想适用于大多数语言):

var string=“

阿卜杜拉赫曼
父亲的名字”; var match=string.match(/
*?
([a-zA-Z]*)/);

然后,我可以使用
match[0]
获得匹配的所有内容,这是

类似于
Abdurrahman”
,或者我可以使用
match[1]
只获得括号内的部分,这给了我
“Abdurrahman”
假设您使用的是PHP,您可以使用explode在

上拆分字符串

$str='<BR>like <BR>Abdurrahman<BR><SMALL>Fathers Name</SMALL>';
$s = explode("<BR>",$str,3);
$string = end($s);
print $string;
$str='

阿卜杜拉赫曼
父亲的名字'; $s=爆炸(“
”,$str,3); $string=结束($s); 打印$string;
输出

$  php test.php
Abdurrahman<BR><SMALL>Fathers Name</SMALL>
$php test.php
阿卜杜拉赫曼父亲的名字
然后,您可以使用“$string”变量并执行任何您想要的操作


上述步骤也可以通过使用prog语言的字符串拆分方法在其他语言中完成。

Prepend

[^此正则表达式应该对前两个

进行数学运算:

/(\s*\s*){2}/i

因此,您应该将它们替换为零,或者使用
preg_match
RegExp.prototype.match
来提取参数

在JavaScript中:

var afterReplace = str.replace( /(\s*<br\s*\/?>\s*){2}/i, '' );
var afterReplace=str.replace(/(\s*\s*){2}/i',);
在PHP中

$afterReplace = preg_replace( '/(\s*<br\s*\/?>\s*){2}/i', '', $str );
$afterReplace=preg_replace('/(\s*\s*){2}/i',''$str);

我只确定它能在PHP/JavaScript中工作,但它应该能在任何情况下工作…

谢谢David。这是因为我醒得很早:)我不确定你到底在找什么。你可能想澄清你的问题。这向你展示了如何找到两个

标记,然后是括号中的任何其他标记。例如,如果您正在查找“父亲”,搜索将是

*?
*(父亲)
,第一个子字符串匹配将指向找到父亲的位置。请注意

[^答案非常好。谢谢,但我想再问一个问题。这非常好>uzay95:我不明白你的意思。uzay95:不,它们是不同的,我相信你应该使用我的回答,因为我声明的原因。你能告诉我这个reges'/(\s*\s*){2}的意思吗/我只是想学习。丹:这与给定的

输入文本不匹配,因为在标记之间除了
\s
之外,你不允许任何东西。解释/(\s*\s*){2}/i/#start regex(#start group\s#whitespace*#任何数量的前一个(inc.zero)#文字\s#空白*#零或前一个以上)#组的结束组{2}#2/#结束正则表达式i#不区分大小写地匹配(对不起,我的空格丢失了)
$afterReplace = preg_replace( '/(\s*<br\s*\/?>\s*){2}/i', '', $str );