Php 如何匹配第一个连字符之前的文本
我有以下字符串:Php 如何匹配第一个连字符之前的文本,php,regex,Php,Regex,我有以下字符串: Citas de Esopo - Música - Belleza... Citas de Lem, Stanislaw - Tortura, sueño... 我需要从第一个中提取“Esopo”,从第二个中提取“Lem,Stanislaw”。对于第二种情况,我有以下regex wich非常有效: /Citas de (.*) \-(.*)\.\.\./ 但对于第一个案例,它返回“Esopo-Música”。如何编写正则表达式,使其与第一次出现“-”之前的文本匹配 我使用p
Citas de Esopo - Música - Belleza...
Citas de Lem, Stanislaw - Tortura, sueño...
我需要从第一个中提取“Esopo”,从第二个中提取“Lem,Stanislaw”。对于第二种情况,我有以下regex wich非常有效:
/Citas de (.*) \-(.*)\.\.\./
但对于第一个案例,它返回“Esopo-Música”。如何编写正则表达式,使其与第一次出现“-”之前的文本匹配
我使用preg_match,然后使用匹配的第一个数组位置
if( preg_match($pattern, $title, $result) > 0 )
{
$title = $result[1];
}
您可以使用:
\bCitas de\h+([^-]+)\h+
代码:
if ( preg_match_all(/\bCitas de\h+([^-]+)\h+/, $input, $matches) )
print_r($matches[1]);
只需将?
(尽可能少)添加到您的解决方案中
/Citas de (.*?) \-(.*)\.\.\./
下面是一个例子。Regex是贪婪的。你必须告诉它不能咀嚼的东西<代码>说它可以咀嚼任何东西。您希望
[^-]
告诉它,它只能咀嚼任何不是破折号/连字符的东西。