正则表达式查找字符串和空格之间的匹配

时间:2013-05-10 10:08:19

标签: regex

我需要找出句子中的所有单词,这些单词介于$和这样的空格之间 这是$ abc $ cde any $ ety。

结果应该是abc,cde和ety。

我试过这个

'(?<=$$)(.*)(?=)'

但它显示了一些错误。这个或任何新的建议有什么问题?

3 个答案:

答案 0 :(得分:1)

你可以试试这个:

\$(\w+)

作为捕捉小组,你会得到每个单词。

\w将匹配a-Z,0-9和_,如果您只想匹配字母,例如,您可以更改为:\$([a-zA-Z]+)

答案 1 :(得分:0)

从问题中假设,每个单词(单词仅包含字符A-Za-z)必须以$开头,并在结尾处有空格。 以下正则表达式将匹配这些单词 - \$([A-Za-z])+(最后有一个空格,由于此处的格式化而很难看到)。如果有多个空格,则可以在正则表达式的末尾使用+(+之前的空格,由于格式化而难以再次查看)。

然后你可以提取第一个匹配组(即$1)作为你的匹配单词,你需要在一个循环中完成这个,直到没有你可以提取的匹配。这就像 -

while ($x =~ /\$([A-Za-z])+  /g) {
   // $1 is your match
}

如果您的字词不仅仅包含字符,那么您可以使用\w提及的pcalcao,其中包括0-9_

答案 2 :(得分:0)

试试这个RegEx:

(?<=\$)([^\s]*)(?=\s)