字边界匹配浮点数后跟可选的 space

Word Boundary match float followed by optional space

我正在尝试匹配一个浮点数后跟一个可选的 space 后跟一个可以表示如下的符号列表

price of rldtoken
420 rld.token 0.28 btc
42.37 rldtoken to xrp
42.37rldtoken to xmr
cost of rldtoken
10 btc 12.47 rldtoken to xmr
whatisrldtoken
btcc price
btc cost
0.2btc

我目前正在使用这个正则表达式

((?:0|[1-9]\d*)?(?:\.\d+)?)\s*\b(rld[\W_]*token|btcc|btc|ark|xmr|xrp)\b

分解为

((?:0|[1-9]\d*)?(?:\.\d+)?) Match float
\s* Match 0 or more spaces
\b(rld[\W_]*token|btcc|btc|ark|xmr|xrp)\b Match words

将除 42.37rldtoken 之外的所有内容都匹配到 xrp 和 0.2btc,我假设这必须与 space 和单词边界

相关

如果我删除单词 boundary,它会匹配我不想匹配的 whatisrldtoken。

非常感谢有关如何进行的一些指导

编辑 一切都在行动 HERE

您可以使用正则表达式:

(?:(\.\d+|\b\d+(?:\.\d+)?)\s*|\b)(rld[\W_]*token|btcc|btc|ark|xmr|xrp)\b

Updated RegEx Demo

要匹配浮点数,更准确的做法是交替匹配以点开头的数字,而不是让两部分都可选,这将导致匹配空字符串。