当我使用货币符号时正则表达式不工作
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 演示。
我有一个正则表达式可以从字符串中提取像 $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 演示。