正则表达式提取字符串没有last char参数

时间:2013-06-18 15:07:40

标签: php regex

有谁知道正则表达式得到以下结果:

Hello world, Another day to die. => Hello world

我正在尝试以下表达式:

/^.*,/ 

但结果是'Hello world!'

我想忽略最后一个字符(!)。任何人都可以帮我一把吗?

最好的问候。

5 个答案:

答案 0 :(得分:2)

使用积极的前瞻:

/^.*?(?=,)/ 

使用示例:

preg_match('/^.*?(?=,)/', "Hello world, Another day to die.", $matches);
echo "Found: {$matches[0]}\n";

输出:

Found: Hello world

答案 1 :(得分:0)

除了@ acdcjunior的答案之外,还有以下几种选择:

"/^.*?(?=,)/" // (full match)
"/^(.*?),/"  // (get element 1 from result array)
"/^[^,]+/"  // (full match, bonus points for matching full string if there is no comma)
explode(",",$input)[0] // PHP 5.4 or newer
array_shift(explode(",",$input)) // PHP 5.3 and older
substr($input,0,strpos($input,","))

有很多方法可以实现这一目标;)

答案 2 :(得分:0)

这是另一个,

$str = 'Hello world, Another day to die';
preg_match('/[^,]+/', $str, $match);

答案 3 :(得分:0)

使用以下内容:

/^[\w\s]+/

答案 4 :(得分:0)

使用此选项,仅检查字母:

/^[a-z]+ [a-z]+/i

或没有正则表达式:

$res = split(",", $string, 2)[0];