正则表达式获得某些词之后的价值

时间:2014-12-22 13:25:34

标签: regex preg-match preg-match-all boost-regex

我有一个永远是动态的字符串,每次返回以下值之一时:

返回1 - > Após o vencimento cobrar juros mora/dia de: R$ 3.44 ao dia Multa de: R$ 17,21 Valores expressos em Real (R$\f REMESSA CIP 263

返回2 - > Após o vencimento cobrar juros mora/dia de: R$ 23.56 ao dia Multa de: R$ 117,80 Valores expressos em Real (R$\f REMESSA **PARCELA 01 / 02**

我需要获得' 之后的价值(R $ \ f ',也就是说,我需要一个能让我回归的正则表达式:

REMESSA CIP 263`和REMESSA ** PARCELA 01/02

我的正则表达式是这个 - > /\(R\$\\f (.*?)/i ,但效果不正常。 我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

Double escape $& \f并使其余部分贪婪,如:

$arr = Array('Após o vencimento cobrar juros mora/dia de: R$ 3.44 ao dia Multa de: R$ 17,21 Valores expressos em Real (R$\f REMESSA CIP 263',
'Após o vencimento cobrar juros mora/dia de: R$ 23.56 ao dia Multa de: R$ 117,80 Valores expressos em Real (R$\f REMESSA **PARCELA 01 / 02** ');
foreach($arr as $str) {
    preg_match("/\(R\\$\\\\f (.*)/i", $str, $m);
    print_r($m);
}

<强>输出:

Array
(
    [0] => (R$\f REMESSA CIP 263
    [1] =>  REMESSA CIP 263
)
Array
(
    [0] => (R$\f REMESSA **PARCELA 01 / 02** 
    [1] =>  REMESSA **PARCELA 01 / 02** 
)

答案 1 :(得分:0)

  1. 使用lookbehind断言来阻止捕获(R$\f
  2. .*?贪婪,以便它实际匹配。
  3. 结果:

    (?<=\(R\$\\f ).*