如何在第一个连字符之前匹配文本

时间:2015-04-07 19:26:31

标签: php regex

我有以下字符串:

Citas de Esopo - Música - Belleza...
Citas de Lem, Stanislaw - Tortura, sueño...

我需要从第一个中提取“Esopo”,从第二个中提取“Lem,Stanislaw”。我有以下正则表达式,它适用于第二种情况:

/Citas de (.*) \-(.*)\.\.\./

但对于第一种情况,它返回“Esopo - Música”。如何编写正则表达式,使其与第一个“ - ”外观之前的文本匹配?

我使用preg_match然后使用匹配的第一个数组位置

 if( preg_match($pattern, $title, $result) > 0 )
 {
     $title = $result[1];
 }

2 个答案:

答案 0 :(得分:2)

只需将?(尽可能少)添加到您的解决方案中。

/Citas de (.*?) \-(.*)\.\.\./

这是demo

答案 1 :(得分:1)

您可以使用:

\bCitas de\h+([^-]+)\h+

RegEx Demo

<强>代码:

if ( preg_match_all(/\bCitas de\h+([^-]+)\h+/, $input, $matches) )
   print_r($matches[1]);