正则表达式匹配以$开头的整个单词

时间:2011-05-04 00:01:16

标签: regex

我需要一个正则表达式来匹配以$开头的整个单词。什么是表达,以及如何测试?

示例:

  

应提取此$ word和$ this。

在上面的句子中,会找到$word$this

6 个答案:

答案 0 :(得分:12)

如果您只想匹配整个单词,则需要单词字符选择器

\B\$\w+

这将匹配$后跟一个或多个字母,数字或下划线。 Try it out on Rubular

答案 1 :(得分:11)

\$(\w+) 

说明:

\$:逃避特殊$字符
():在此处捕获匹配项(至少在大多数引擎中) \w:匹配a - zA - Z0 - 9(以及_
+:匹配任意次数

答案 2 :(得分:2)

我想你想要这样的东西:

/(^\$|(?<=\s)\$\w+)/

第一个括号只是捕获你的结果。

^ \ $匹配整个字符串的开头,后跟一个美元符号;

|给你一个选择OR;

(?&lt; = \ s)\ $是一个积极的看法,检查是否有一个美元符号\ $后面有一个空格。

最后,(回顾一下)如果我们有一个以$或$开头的字符串前面有空格,那么正则表达式会检查是否有一个或多个单词字符 - \ w +。

这将匹配:

$test one two three

one two three $test one two three

但不是

one two three$test

答案 3 :(得分:1)

对于您的测试部分,我建议您使用http://myregexp.com/

答案 4 :(得分:0)

这应该是不言自明的:

\$\p{Alphabetic}[\p{Alphabetic}\p{Dash}\p{Quotation_Mark}]*(?<!\p{Dash})

请注意,它不会尝试匹配数字或下划线是其他词语中没有的愚蠢内容。

答案 5 :(得分:0)

试试这个正则表达式:

/ (\$\w+)/

\w+表示“一个或多个单词字符”。这匹配以$开头,后跟单词字符的任何内容,但前提是它前面有空格。

你可以使用perl测试它(回声只是打破长线后的\):

> echo 'abc $def $ ghi $$jkl mnop' \
  | perl -ne 'while (/ (\$\w+)/g) {print "$1\n";} ' 
$def

如果你不使用正则表达式中的空格,你将匹配$jkl中的$$jkl - 不确定这是否是你想要的:

> echo 'abc $def $ ghi $$jkl mnop' \
  | perl -ne 'while (/(\$\w+)/g) {print "$1\n";} ' 
$def
$jkl