【发布时间】:2015-08-04 00:29:30
【问题描述】:
我对正则表达式很陌生,只是不知道如何编写一个模式来匹配我需要的东西。任何帮助都会很棒!
我想使用 PHP 和正则表达式来捕获字符串中特定唯一字符(分隔符)之后的每组字符,以及该分隔符第一个实例之前的任何字符集。然后我想将所需的输出“匹配”到 PHP 数组中。
- 示例分隔符:
> -
示例字符串:
$str = 'word1 > word-2 > word.3 > word*4'; -
我想要的匹配:
array([0] => 'word1', [1] => 'word-2', [2] => 'word.3', [3] => 'word*4',);
我查看了以下回复,虽然它们很接近,但它们并不能完全帮助我实现我所需要的:
- get all characters after "," character
- Regex to get the words after matching string
- Regex to get everything after the first space
这是我目前正在使用的 PHP 函数,但它目前只能找到分隔符之间的字符:
function parse_conditions($str, $delimiter='>') {
if (preg_match_all('/' . $delimiter . '(.*?)' . $delimiter . '/s', $str, $matches)) {
return $matches[1];
}
注意:给定字符串中的项目数可能会有所不同,因此我不能使用需要特定数量分隔符的模式(例如/^(.*?)>(.*?)>(.*?)>$/)
【问题讨论】:
-
你为什么不能在
>上分裂? -
这里不需要正则表达式。只需使用explode()。
-
要么将第二个分隔符包装在前瞻中,要么简单地提取不是分隔符的连续字符串 (
[^>]+)。