请帮我解决这个问题。 我坚持使用此代码
我的内容:
<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 /...'
之后我需要例外删除数字值任何帮助将不胜感激,谢谢..
答案 0 :(得分:3)
使用\K
丢弃之前匹配的字符,以便在决赛中打印。 \ K保持文本匹配到目前为止的整个正则表达式匹配。
\/path\/\d+">\K(?!.*img).*?(?=<\/a>)
$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