3

我在使用正则表达式时遇到了困难,我在没有任何先前匹配的情况下获得了单独的“收入”。

$string = "FY2013 EPS, FQ 2012 revenue";
preg_match_all("/F[Y|Q]\s?\d{4}\sEPS|revenue/", $string, $matches);
print_r($matches);

结果:

Array ( [0] => Array ( [0] => FY2013 EPS [1] => revenue ) )

我所期待的:

Array ( [0] => Array ( [0] => FY2013 EPS [1] => FQ 2012 revenue ) )
4

4 回答 4

5

试试这个

 $string = "FY2013 EPS, FQ 2012 revenue";
preg_match_all("/F[Y|Q]\s?\d{4}\s(?:EPS|revenue)/", $string, $matches);
print_r($matches);
于 2013-03-29T11:53:43.567 回答
4

它读作OR 收入- 你想使用:

"/F[Y|Q]\s?\d{4}\s(?:EPS|revenue)/"

其中?:表示非捕获组

于 2013-03-29T11:52:05.157 回答
2

您需要对EPS|revenue特定的,而不是revenue其他所有内容进行替换。全部一起:

/F[Y|Q]\s?\d{4}\s(?:EPS|revenue)/
于 2013-03-29T11:52:05.883 回答
1

试试这个

preg_match_all("/(F[Y|Q]\s?\d{4}\s(EPS|revenue))/", $string, $matches);

生产

Array
(
    [0] => Array
        (
            [0] => FY2013 EPS
            [1] => FQ 2012 revenue
        )

    [1] => Array
        (
            [0] => FY2013 EPS
            [1] => FQ 2012 revenue
        )

    [2] => Array
        (
            [0] => EPS
            [1] => revenue
        )
)

为了我

于 2013-03-29T11:52:37.560 回答