2013-07-21 4 views
1

я следующую строку:Regex помощь (для Yahoo Pipes)

<span class="pos">$2.472,38</span> 

Я хотел бы получить 2472,38 (и в конце концов 2472.38)

Я пытался в regexpal, и обнаружили, что [\d,.]+ кажется, работает, но из-за того, как работает модуль регулярных выражений труб yahoo (замените ... на ..., я должен сначала выбрать всю строку

Так что я думал

replace .+([\d,.]+).+ with $1 

Но это только дает мне результат 8 (последняя цифра). Поэтому я предполагаю, что что-то не так, как я определяю группу захвата. любой ключ? Заранее спасибо

вы можете найти трубу здесь http://pipes.yahoo.com/pipes/pipe.info?_id=06780ca250e5b107b7c1ef52455996ff

ответ

1

Ваш первый подвыражению .+ в настоящее время «жадный» (т.е. пытается соответствовать все это может в то же время позволяя все выражение для успеха), так что это соответствие все вверх до последней цифры. Вам нужно «остановить» до начала цифр, как-то, исходя из ваших знаний о том, что может предшествовать цифрам. Если вы знаете, что есть знак доллара перед цифрой и не доллар/значные комбинации в span элемента, вы можете просто добавить \$ после .+, как в .+\$([\d,.]+).+

+0

Привет Питер, ваше решение работает, если я добавить ' \ 'перед значком $ (я предполагаю, что $ нужно бежать, я ошибаюсь?) – AlvaroFG

+0

Да, извините. Символ '$' соответствует «концу строки» и * does * должен быть экранирован при использовании в качестве литерала. –