获取多个子串preg_match_all的数组

时间:2017-02-07 01:10:45

标签: php regex preg-match

我必须迭代300个文件并将字符串从一列中更改为excel中的4列。我知道有一种方法可以在reg-ex中执行此操作但我无法弄清楚...我知道preg_match可以命名返回的匹配..但我已经尝试使用regex101.com来弄清楚如何获得我正在寻找的返回结果..

我有这个字符串..

Rev 1: blah blah blah blah blah blah 1/1/2017 BLAH

我必须把它变成一个看起来像这样的数组......

$results = array(
    "rev" => "Rev 1",
    "text" => "blah blah blah blah blah blah",
    "date" => "1/1/2017"
    "name" => "BLAH"
)

我遇到的问题是,我不知道如何在一个preg_match调用中获得多个匹配以返回所需的方式。我已经尝试了谷歌某些方法来做到这一点,并且空了。

我有一些正则表达式匹配每个字符串..但不是一次全部匹配。

\d+\/\d+\/\d+ \(?[A-z]+\)?datename匹配,包含或不包含()

^([Rr][Ee][Vv] \d+:)rev

匹配

我不知道如何在textrev之间获取date,所以我没有这样的注册表...

1 个答案:

答案 0 :(得分:1)

你真的很亲近(请注意:我假设你的所有字符串都是相同的格式)

^([Rr][Ee][Vv] \d+:)(.*)\d+\/\d+\/\d+(.*)?

(.*)可让您捕捉群组之间的内容。你应该把你想要捕获的任何东西放在括号内。

您可以在此处查看https://regex101.com/r/8GKgWl/1