我有以下字符串,其格式为country:
Cum name
,Extra info
。
Asia: Asian Cup - Play Offs
Asia: Asian Cup
Asia: World Cup - Qualification - First Stage
Australia: A-League
Belgium: Jupiler League - Championship Group
Brazil: Série A
我遇到的问题是如何使用正则表达式分隔每行的信息。
更具体地说,从第一行我想导出以下信息:
[ Asia, Asian Cup, Play Offs ]
从第二个信息
[ Asia, Asian Cup ]
等等。
目前我尝试了以下声明:
^([\w]+\:\s+)[^\-]+(?!\-\s)+
没有完成,我不知道如何继续这个。我的主要问题是我不知道如何否定声明的一部分。
那么,解决这个问题的方法是什么?
我在这里有一个实时编辑示例:http://refiddle.com/refiddles/56b3960775622d40bb050000
答案 0 :(得分:3)
您可以使用explode
:
$lines = ['Asia: Asian Cup - Play Offs',
'Asia: Asian Cup',
'Asia: World Cup - Qualification - First Stage',
'Australia: A-League',
'Belgium: Jupiler League - Championship Group',
'Brazil: Série A'];
$results = array_map(function ($i) {
$ret = [];
list($ret[0], $tmp) = explode(': ',$i, 2);
return array_merge($ret, explode(' - ', $tmp, 2));
}, $lines);
print_r($results);
答案 1 :(得分:2)
答案 2 :(得分:1)
首先,在\n
上展示您的字符串,然后您可以使用以下正则表达式:
([\w\s]+): ([\w ]+)(?:- ?([\w -]+))?