使用Regex进行匹配

时间:2017-11-01 20:22:47

标签: php regex linux

" Day":6月8日至10月,"地点":美国,"城市":Newyork

我需要匹配3场比赛:

2012年6月8日至10日

US

纽约

2 个答案:

答案 0 :(得分:0)

根据我上面的评论,如果这是JSON,你肯定应该使用这些功能,因为它们更适合这个。

但是,您可以使用以下REGEX。

/:([a-zA-Z0-9\s-]*)/g

<?php
preg_match('/:([a-zA-Z0-9\s-]*)/', '"Day":June 8-10-2012,"Location":US,"City":Newyork', $matches);
print_r($matches);

正则表达式演示在这里:

https://regex101.com/r/BbwVQ5/1

答案 1 :(得分:0)

以下是一些简单的方法:

代码:(Demo

$string='"Day":June 8-10-2012,"Location":US,"City":Newyork';

var_export(preg_match_all('/:\K[^,]+/',$string,$out)?$out[0]:'fail');

echo "\n\n";

var_export(preg_split('/,?"[^"]+":/',$string,NULL,PREG_SPLIT_NO_EMPTY));

输出:

array (
  0 => 'June 8-10-2012',
  1 => 'US',
  2 => 'Newyork',
)

array (
  0 => 'June 8-10-2012',
  1 => 'US',
  2 => 'Newyork',
)

Pattern #1 Demo \K:之后重新开始匹配,以便可以避免积极的观察(保存&#34;步骤&#34; /提高模式效率)通过匹配所有后续字符这不是逗号,可以避免捕获组(保存&#34;步骤&#34; /提高模式效率)。

Patter #2 Demo ,?使逗号可选,并限定领先的双引号&#34;键&#34;匹配(拆分)。要拆分的目标子字符串将匹配完整的&#34;键&#34; substring并以下列:冒号结束。