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

时间:2015-01-15 16:05:01

标签: regex

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

  

你好$ name $。今天是$ dateOfWeek $,我们应该穿一些$衣服$。

这是我的正则表达式:

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

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

  

您好先生您的余额是$$ moneyValue。

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

如何更改正则表达式以提取 $$参数$ 等参数?参数可以包括空格和1个以上的单词。

2 个答案:

答案 0 :(得分:1)

你的正则表达式需要“更贪婪”,我想你想要一个不同类型的捕获组

您可以尝试此\$([\w\s]+)\$?

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


对第一个字符的新限制不能是空白字符:

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

答案 1 :(得分:1)

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

试试这个。看看演示。

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