Предполагая, что от вопроса, каждое слово (слово содержит только символы A- Za-z) должен начинаться с $
и иметь место в конце. Следующее regex будет соответствовать таким словам - \$([A-Za-z])+
(в конце есть пробел, который трудно увидеть из-за форматирования). Если есть несколько пробелов, вы можете использовать +
(пробел перед +, который трудно увидеть снова из-за форматирования) в конце регулярного выражения.
Затем вы можете извлечь первую подходящую группу (то есть $1
) в качестве подходящего слова, и вам нужно сделать это в цикле, пока не будет больше совпадений, которые вы можете извлечь. Это что-то вроде -
while ($x =~ /\$([A-Za-z])+ /g) {
// $1 is your match
}
Если слово содержит больше, чем просто символов, то вы можете использовать \w
как уже упоминалось pcalcao
, который будет включать в себя как 0-9
и _
Я понимаю, что есть место после этого. Предполагаю, что вы хотите '(? <= \ $) (. *?) (? = \ S)' –
'/ \ $ (\ w +) \ b /'. Что вам не хватает, так это граница слов, это не всегда пространство. – 2013-05-10 10:21:11