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

Php 在preg_match中使用什么模式从字符串中获取值,php,preg-match,Php,Preg Match,我有两条线 第一个: 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的数量,我真的不知道该使用什么模式。我需要第一个字符串中的整

我有两条线

第一个:

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的十进制)。

CZK

\d+(?=,\d*\s*CZK)
以上正则表达式的解释可以从下面的例子中看出


如果要选择符号
+
-
,则可以在开始处添加
[+-]?

这实际上可以根据需要简单或复杂。以最简单的形式,您可以寻找一种模式,其内容如下:

number.逗号.number.space.CZK

这可以写成:

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

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

,是一个逗号

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

\s是一个空格

CZK是你想要结束的字符串

您可以根据自己的意愿对此进行扩展。以下是一个工作示例:

编辑:

如果您希望捕获50/75,则需要将括号括在您要搜索的零件周围,例如:


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

@UareBugged上述正则表达式将选择从整数开始到CZK结束的所有内容,而您的问题表明您只需要整数,这就是我回答中的正则表达式所做的。看看那个演示。如果您对选择所有内容感兴趣,请更改您的问题。这是一个很好的观点-我没有提到捕获组()。如果要提取50或75,可以这样写:
([0-9]+),[0-9]+\sCZK
\d+(?=,\d*\s*CZK)