我需要一个正则表达式来匹配以$开头的整个单词。什么是表达,以及如何测试?
示例:
应提取此$ word和$ this。
在上面的句子中,会找到$word
和$this
。
答案 0 :(得分:12)
答案 1 :(得分:11)
\$(\w+)
说明:
\$
:逃避特殊$
字符
()
:在此处捕获匹配项(至少在大多数引擎中)
\w
:匹配a - z
,A - Z
和0 - 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