2014-04-18 28 views
-5

我需要匹配everything(任意字符)正則表達式:
everything.html
everything
比賽.+直到.html或字符串的結尾。
.html是可選的,但如果存在,請停止匹配。正則表達式|如果存在,則停止

+1

你的正則表達式失敗了嗎? – Robin

+1

可以使用[lookahead](http://www.regular-expressions.info/lookaround.html):[(。*?)(?= \。html | $)](http://regex101.com/ r/qD6vJ6) –

+0

需要說明。 'everything.except.htmlisgood',是否需要匹配「'everything.except.html」(因爲'html'被找到),或者是完整的字符串 - 因爲它等於'。+'? – usr2564301

回答

3

您可以使用:

^.+?(?=\.html|$) 
  • (?=...)是向前看,它將匹配,如果有什麼後當前字符是由什麼是先行裏面,沒有「選擇」這些字符匹配。這是一個零寬度檢查
  • .+?會匹配一切(至少一個字符),但在.html第一次出現停止(從而避免匹配123.html123123.html123.html)字符串的開頭和結尾
  • ^$比賽

demo here

關於您的解決方案,[^...]代表「一個字,除了那些中所列出的任何一個字符」。

+0

這工作非常好。謝謝 – user193661

+0

不客氣,我不相信所有這些downvotes是合理的......很高興我能提供幫助。 – Robin

相關問題