2015-06-22 70 views
1

需要一個正則表達式匹配以下所有條件:正則表達式 - 匹配文件名帶或不帶擴展名

hello 
hello. 
hello.cc 

我試過\b\w+\.?\w+?\b,但這並不符合"hello."(上面提到的第二個字符串)。

+0

問題是你在點之後執行字邊界'\ b',它不匹配。試試這個:'\ b \ w + \。?(\ w + \ b)?'https://regex101.com/r/lX1aE0/1有關單詞邊界的更多解釋,請查看http://www.regular- expressions.info/wordboundaries.html – bro

+0

@bro實際上,它是雙重的,包括字邊界和他在點之後至少要求一個字符的事實。你的解決方案雖然解決了,但提交一個答案。 – melwil

回答

1

這是一樣簡單,因爲我可以得到它:

\b\w+\.?\w* 

請參閱demo

4

的問題是,你執行一個點之後的單詞邊界\b,不匹配,並且您需要與\w+?後至少一個字符的事實(懶惰匹配!)。 試試這個:

\b\w+\.?(\w+\b)? 

https://regex101.com/r/lX1aE0/1

有關單詞邊界更多的解釋,檢查此鏈接
http://www.regular-expressions.info/wordboundaries.html

+1

正則表達式中的錯誤還在於在點之後有一個強制的惰性「一個或多個」量詞('\ w +?'),這會阻止匹配。 – melwil

+0

@melwil。是的,謝謝你的改正。我改編了我的答案。 – bro

+0

第二個'\ b'是多餘的。 '\ w +'會消耗下一個字邊界的所有內容。即'\ w + \ b' ==='\ w +' – Bohemian

相關問題