我有一段包含另一个正则表达式的文字。
示例文字:
...<rege>!^.*$!mailto:asdf@adsfsdaf.com!</rege>...
我想要匹配的是:
mailto:asdf@adsfsdaf.com
这不起作用:
$patterns[] = '/<rege>!\^\.\*\$!(.*)!<\/rege>/';
思想?
答案 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);
?>