解析带有 2 个分隔符的格式化文本以生成两个数组 [重复]

问题描述 投票:0回答:3

我有一个小问题需要解决。我想删除字符串的一部分或拆分它。

我最终想要做的是分成 2 个变量,其中我有 "One, Two, Three" 和 "1, 2, 3" ,我不确定我是否可以将它分成两个或者我是否必须删除“-”之后的部分首先再做一次以删除“-”之前的位以结束两个变量。不管怎样,我看了看,似乎

preg_split()
preg_match()
可能有效,但不知道
preg
模式。

这就是我到目前为止所拥有的:

$string = 'One-1, Two-2, Three-3';
$pattern = '????????????';
preg_match_all($pattern, $string, $matches);
print_r($matches);

编辑:抱歉我的问题措辞错误:

基本上,如果有人可以帮助我使用

preg
模式来拆分值,那么我就有一个一、二、三和 1、2、3

的数组

----------------编辑----------------

如果可以的话,我还有一个问题,如果我有这个,preg_match 会如何改变 :

One Object-1, Two Object-2

所以现在我在“-”之前有多个单词要存储在一起,而“1”单独存储?

php regex preg-match text-parsing preg-split
3个回答
1
投票

试试这个:

$string = 'One-1, Two-2, Three-3';
$pattern = '/(?P<first>\w+)-(?P<second>\w+)/';
preg_match_all($pattern, $string, $matches);

print_r($matches['first']);
print_r($matches['second']);

输出:

Array ( [0] => One [1] => Two [2] => Three ) 
Array ( [0] => 1 [1] => 2 [2] => 3 ) 

0
投票

如果你总是有一个“-”,请改用这个:

$string = "One-1";
$args = explode("-", $string);
// $args[0] would have One
// $args[1] would have 1

您可以在此处阅读有关此功能的更多信息:http://php.net/manual/en/function.explode.php


0
投票

这应该有效:

[^-]+

但是为什么要使用正则表达式呢?你可以简单地通过“-”爆炸

© www.soinside.com 2019 - 2024. All rights reserved.