0

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

结果应该是 abc、cde 和 ety。

我试过这个

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

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

4

3 回答 3

1

你可以试试这个:

\$(\w+)

作为捕获组,您将获得每个单词。

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

于 2013-05-10T10:11:54.033 回答
0

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

然后您可以提取第一个匹配组(即$1)作为您的匹配词,并且您需要在循环中执行此操作,直到没有更多可以提取的匹配项。就是这样——

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

如果您的单词包含的不仅仅是字符,那么您可以使用\w提到的pcalcao,这将包括0-9_

于 2013-05-10T10:12:57.333 回答
0

试试这个正则表达式:

(?<=\$)([^\s]*)(?=\s)
于 2013-05-10T10:13:06.107 回答