正则表达式从另一个正则表达式中提取电子邮件地

时间:2009-09-06 11:26:53

标签: php regex

我有一段包含另一个正则表达式的文字。

示例文字:

...<rege>!^.*$!mailto:asdf@adsfsdaf.com!</rege>...

我想要匹配的是:

mailto:asdf@adsfsdaf.com

这不起作用:

    $patterns[] = '/<rege>!\^\.\*\$!(.*)!<\/rege>/';

思想?

3 个答案:

答案 0 :(得分:0)

试试这个:

$patterns[] = '/<rege>!\^\.\*\$!([^<]*)!<\/rege>/';

答案 1 :(得分:0)

要拥有\ inside''你必须加倍它:

$patterns[] = '/<rege>!\\^\\.\\*\\$!(.*)!<\\/rege>/';

我还认为你可能希望这个匹配不合适,因为你想要正确地捕获电子邮件,即使在搜索文本中出现类似的结构多次,所以:

$patterns[] = '/<rege>!\\^\\.\\*\\$!(.*?)!<\\/rege>/';

答案 2 :(得分:0)

你需要逃避反斜杠:

<?php

$sample = "<rege>!^.*$!mailto:asdf@adsfsdaf.com!</rege>";
preg_match("/<rege>!\\^\\.\\*\\$!(.*)!<\/rege>/",$sample,$matches);

print_r($matches);
?>