我需要正则表达式匹配&提取以货币为前缀(或后缀)的十进制值。 以下是一些例子
10$
10.01 $
$ 10.012
61 USD
£ 50.51
94 GBP
发现这个\ p {Sc}非常有用,但不足以满足我的需要。
答案 0 :(得分:1)
怎么样:
((?:\p{Sc}|[A-Z]{3})?\s*\d+(?:\.\d+)?\s*(?:\p{Sc}|[A-Z]{3})?)
答案 1 :(得分:1)
此正则表达式适用于PCRE正则表达式引擎(因为它使用 branch reset feature ):
(?|(\p{Sc}|USD|GBP) *(\d+(?:\.\d+)?)|(\d+(?:\.\d+)?) *(\p{Sc}|USD|GBP))
这会为您的输入数据生成以下MATCH
信息:
MATCH 1
1. 10
2. $
MATCH 2
1. 10.01
2. $
MATCH 3
1. $
2. 10.012
MATCH 4
1. 61
2. USD
MATCH 5
1. £
2. 50.51
MATCH 6
1. 94
2. GBP