2010-10-11 5 views
0

demo я проверить регулярное выражение, я любопытный о результате матча,регулярного выражения проблема

символ * является greendy, в моем варианте, результат shuld соответствует только 1 результату, как Belows:

<script language=javascript> 
ati('#', '../../../UpLoadFile/Product/20101010162153846.jpg', '加厚青色围脖'); 
} 
</script> 
<script language=javascript> 
ati 

но результат не в том, что я ожидаю, любой мог бы помочь мне объяснить его, спасибо?

ответ

1

* жадный, но это соответствует только \s, что означает пробельные символы. Если вы хотите подобрать все до последнего появления ati, вместо этого используйте .*.

Если эта среда не соответствует новой строке с., Может быть, вы можете включить их путем сопоставления на (.|\n)*

+1

Обычный способ заставить '.' сопоставлять что-нибудь в том числе - новые строки, чтобы установить переключатель * dot-matches-all * (например,' /.*/ s' или '(? S). *' --it's '' 'в большинстве вкусов, но Ruby использует' m'). В JavaScript, который не имеет режима * dot-matches-all *, лучше использовать '[\ s \ S] *'. –

1

Это не может соответствовать тому, что вы хотите, потому что вы только соответствие начала его.

Жадного получают вас, когда вы ищете что-то произвольному между 2 маркерами, и вы получите все, что между первым и последним, т.е.

/<p>.*<\/p>/ 

Обычно, когда вы сделаете это, вы хотите, чтобы все p элементов. Но без ungreedy .*? или флага U вы получите все, что находится между первым и последним экземпляром.

+0

Чтобы упаковать этот ответ в регулярное выражение, я думаю, что плакат, вероятно, хочет '/ /'. – DarkDust