我想知道是否有可能有一个正则表达式可以检测
单词组合,如果它们之间有不同的单词或符号
我有以下正则表达式:
(\$[\s]?([\d\,]+)([\.\d*](\d*))?([\s]?(hundred|thousand|million|billion|trillion))?)|((((one|two|three|four|four|five|five|six|six|seven|seven|eight|eight|nine|ten|eleven|twelve|thirteen|fourteen|fifteen|sixteen|eighteen|nineteen|twenty|thirty|forty|fifty|sixty|seventy|eighty|ninety|hundred|third|quarter|fifth|half|hundred|thousand|million|billion|trillion)[\s]?)+)?([\d\.\,\"a"]+)?([\s]*(dollars|dollar|USD)))
这是为了确定所有可能的“类型”美元金额,例如:
$1.5 dollars / dollar, 20,000 dollars, $1.5
,以及
five hundred dollars'
你明白了。你知道吗
我想知道我是否可以让它工作,以便能够确定像这样的东西
ninety-five dollars
(第二点)(9和5都在名单上,但我也不知道如何计算破折号。你知道吗
像这样的
10 Canadian dollars
(第1点)
只是\w
不起作用,因为它会捕获“美元”前面可能不需要的单词,例如
strong dollar
我发现regex101对于查看regex及其效果非常有用,但是我无法理解它
所有你需要的是添加一个破折号到字符集后面的大组有。当前为
[\s]
;将其更改为[\s-]
:https://regex101.com/r/1TQLf2/
要在“…美元”之外匹配“…加拿大美元”,请在当前的
(dollars|dollar|USD)
组中添加“加拿大美元”。更改为(如果不使用
([Cc]anadian dollars|...
,可能是/i
)相关问题 更多 >
编程相关推荐