在 preg_match 中使用什么模式从字符串中获取值

What pattern to use in preg_match to get value from string

我有两个字符串

第一个:

Date: Sat, 13 Jun 2015 13:26:05 +0100
Subject: Changing the balance: +50,00 CZK
Dear client,

第二个:

Date: Sat, 14 Jun 2015 14:58:05 +0100
Subject: Changing the balance: +75,00 CZK
Dear client,

如果我想从这些字符串中获取 CZK 的数量,我真的不知道该使用什么模式。我需要来自第一个字符串的整数 50 和来自第二个字符串的整数 75 (只是整数而不是带有 ,00 的小数)。

对 select CZK

之前数字的整数部分使用正向预测
\d+(?=,\d*\s*CZK)

上面正则表达式的解释可以从这里看出DEMO

如果要select符号+-,那么可以在开头加上[+-]?

这真的可以像您需要的那样简单或复杂。在最简单的形式中,您可以寻找这样的模式:

number.comma.number.space.CZK

这可以写成:

[0-9]+,[0-9]+\sCZK

[0-9]是一个范围,介于0-9(数字)之间。加号表示至少需要 1 个数字。如果您想制作这 EXACTLY 2 个数字,您可以将 [0-9]+ 更改为 [0-9]{2}

,是逗号...

[0-9]+是另一个数字(至少1)

\s 是一个 space

CZK 是您想要结束的字符串

您可以根据需要对此进行扩展。这是一个工作示例:http://regexr.com/3baog

编辑:

如果您希望获得 50 / 75,您需要在您之后的部分加上括号,例如:

([0-9]+),[0-9]+\sCZK