当我使用货币符号时正则表达式不工作

Regex not working when I use currency sign

我有一个正则表达式可以从字符串中提取像 $parameter$ 这样的值。它适用于以下字符串:

Hello Mr. $name$. Today is $dateOfWeek$ and we should wear some $clothes$.

这是我的正则表达式:

$((?:\w*\s*)+)\(?(\d*)\)?$

但如果字符串中有货币符号,则无法提取参数:

Hello Mr. Your balance is $$moneyValue.

如果我在上面的字符串中 运行 我的正则表达式,参数 $moneyValue$ 不会被提取。提取的值是 $$.

如何更改我的正则表达式以提取像 $$parameter$ 这样的参数?一个参数可以包含whitespace和1个以上的word.

您的正则表达式需要 "more greedy",而且我认为您需要一些不同类型的捕获组

你可以试试这个$([\w\s]+)$?

我使用 Javascript 进行了测试,它适用于您的两种情况


你对第一个字符的新限制不能是白色-space字符:

$(\w+[\w\s]*)$?

$([^$]+)(?=$|\b)$*

尝试 this.See 演示。

https://regex101.com/r/tX2bH4/19