REGEX - 获取innertext

时间:2015-01-13 09:34:00

标签: php regex string

请帮我解决这个问题。 我坚持使用此代码

我的内容:

<a href="/path/1232432432">Get Me</a>
<a href="/path/7845454354"><img src="imagelink.png" /></a>
<a href="#">Other link</a>

我想获得innertext&#34; Get Me&#34;

我的正则表达式:/(?<=\/path\/)(?!.*img).*?(?=<\/a>)/g

我的结果:

1232432432">Get Me

在&#39; / path /...'

之后我需要例外删除数字值

任何帮助将不胜感激,谢谢..

4 个答案:

答案 0 :(得分:3)

使用\K丢弃之前匹配的字符,以便在决赛中打印。 \ K保持文本匹配到目前为止的整个正则表达式匹配。

\/path\/\d+">\K(?!.*img).*?(?=<\/a>)

DEMO

$re = "~\/path\/\d+\">\K(?!.*img).*?(?=<\/a>)~m";
$str = "<a href=\"/path/1232432432\">Get Me</a>\n<a href=\"/path/7845454354\"><img src=\"imagelink.png\" /></a>\n<a href=\"#\">Other link</a>";
preg_match_all($re, $str, $matches);
print_r($matches);

答案 1 :(得分:1)

(?<=\/path\/)(?!.*img)[^"]+">(.*?)(?=<\/a>)

您可以使用组来使用自己的正则表达式捕获您想要的内容。请参阅演示。

https://regex101.com/r/sH8aR8/62

$re = "/(?<=\\/path\\/)(?!.*img)[^\"]+\">(.*?)(?=<\\/a>)/m";
$str = "<a href=\"/path/1232432432\">Get Me</a>\n<a href=\"/path/7845454354\"><img src=\"imagelink.png\" /></a>\n<a href=\"#\">Other link</a>";

preg_match_all($re, $str, $matches);

答案 2 :(得分:0)

也许......?

/(?<=\/path\/1232432432">)(?!.*img).*?(?=<\/a>)/g

答案 3 :(得分:0)

使用这个:

/<a\s+(.*?)>(.*?)<\/a>/img