在 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
我有两个字符串
第一个:
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