如何使用一个正则表达式而不是两个匹配值?

时间:2014-05-30 22:39:19

标签: php regex

我想从这个字符串中捕获值:

$data='1=A
5=B
7=F
11=G';

下一段代码工作正常,但是使用了两个正则表达式。有没有办法只使用一个?

$i = 1;

if (!preg_match("/\n$i=(.*)/",$data,$m))
{
  preg_match("/^$i=(.*)/",$data,$m);
}

1 个答案:

答案 0 :(得分:1)

我认为多线模式正是您所寻找的:

preg_match("/^$i=(.*)/m",$data,$m);

m修饰符允许起始锚点(^)匹配任何的开头,而不仅仅是字符串的开头。它仍会阻止(11=G)匹配,因为1必须位于该行的开头,并且必须立即位于=。那是你的意思吗?