正则表达式分裂3个字符串和2个int

时间:2017-05-18 16:40:18

标签: php regex

我有两种类型的字符串。

一个是这样的

Text Text Text+24 2009 2

另一种类型是

Text text 2005 2

我想以这种方式分割这两种类型的字符串

Text Text Text+24
2009
2

OR

Text text
2005
2

文本部分可能会有所不同,但在任何情况下,最后都有2个数值。

编辑:我试图做那样的事情

preg_match_all("/.*?\\d+.*?(\\d+).*?(\\d+)/is", $txt, $matches)

不幸的是我无法理解如何使用正则表达式

1 个答案:

答案 0 :(得分:3)

您可以在preg_match_all中使用此正则表达式:

^(.*?)\h+(\d+)\h+(\d+)$

RegEx Demo

<强>代码:

$re = '/^(.*?)\h+(\d+)\h+(\d+)$/m';

preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);

// Print the entire match result
print_r($matches);

RegEx分手:

^ - Start
(.*?) - Match and capture 0 or more of any character (lazy)
\h+ - Match 1 or more horizontal whitespace
(\d+) - Match & capture 1 or more digits
\h+ - Match 1 or more horizontal whitespace
(\d+) - Match & capture 1 or more digits
$ - End