我需要查找严格以“$”开头并且只包含数字的单词的所有匹配。所以我写了
[$]\d+
这给了我4次比赛为
$10 $10 $20a a$20
,所以我想用使用\乙字边界:
[$]\d+\b
但它再次匹配
一20美元给我。
我试图
\b[$]\d+\b
,但我失败了。
我正在寻找说,接受只有当这个词从$开始,然后是DIGITS。我如何用$ $告诉IT开始,因为我认为\ b正在让它假定字面边界意味着包围在字母数字字符内。
解决方案是什么?
我需要查找严格以“$”开头并且只包含数字的单词的所有匹配。所以我写了
[$]\d+
这给了我4次比赛为
$10 $10 $20a a$20
,所以我想用使用\乙字边界:
[$]\d+\b
但它再次匹配
一20美元给我。
我试图
\b[$]\d+\b
,但我失败了。
我正在寻找说,接受只有当这个词从$开始,然后是DIGITS。我如何用$ $告诉IT开始,因为我认为\ b正在让它假定字面边界意味着包围在字母数字字符内。
解决方案是什么?
不是最好的解决方案,但这应该工作。 (它确实与你的测试用例)
(?<=\s+|^)\$\d+\b
这看起来很有希望,你能告诉你如何使用这个反向引用? – 2009-03-05 16:07:30
(?<=)是一个正回归。它断言美元之前的字符匹配括号之间的正则表达式(这里是字符串的开头或一个或多个空格) – 2009-03-05 16:11:17
你试过
\ B \ $ \ d + \ b
与尝试^ \ $ \ d +
哪里^表示一个字符串的开始。
你被关闭,你只需要逃避$:
\B\$\d+\b
见的例子在这里一致:http://regexhero.net/tester/?id=79d0ac3b-dd2c-4872-abb4-6a9780c91fc1
为什么是这个问题的社区维基? – 2009-03-05 16:17:24