在字符串中间搜索匹配项

时间:2012-12-30 12:47:24

标签: php regex string

我的正则表达式:

(?<=span class="ope">)[a-z0-9]+?\.(pl|com|net\.pl|tk|org|org\.pl|eu)|$(?=<\/span>)$

目前,只有在文本开头找到字符串才会匹配,当它在中间时,它会失败。

例如

Something example.com - 失败

example.com Something - 成功(找到example.com)。

这个有解决方案吗?

3 个答案:

答案 0 :(得分:1)

(?<=span class="ope">).*?([a-zA-Z0-9]*\.(pl|com|net\.pl|tk|org|org\.pl|eu)).*(?=<\/span>)

测试:http://www.regex101.com/r/wK0aA2

如果你使用它,你将不得不拔出第1组而不是第0组。

答案 1 :(得分:1)

这是经过测试的解决方案:

(?<=span class="ope">).*?(?P<domain>\w+\.(?:pl|com|net\.pl|tk|org|org\.pl|eu)).*?(?=<\/span>)

它返回您想要的域domain键。在这里试试:http://www.regex101.com/r/mK1fP0

两个人看不见的问题。第二个必须是先行。我还插入了一些.*?两次来匹配域名周围的东西。

答案 2 :(得分:0)

试试这个

(?<=span class="ope">)[a-zA-Z0-9\s]*[a-z0-9]+?\.(pl|com|net\.pl|tk|org|org\.pl|eu)|$(?=<\/span>)$