2016-01-22 75 views
4

如何找到這樣的線路在文件定期對比賽

########  this_is_a_line.sh  ######## 

表達我嘗試下面的正則表達式,但它不工作

(#)+()+(A-Za-z0-9_)+(.sh)()+(#)+ 

但這似乎並沒有工作。任何人都可以讓我知道什麼是錯的?

回答

6

您使用(...)(a capturing group)而不是[...](a character class)。使用字符類:

#+ +[A-Za-z0-9_]+\.sh +#+ 
    ^^^^^^^^^^^^^ 

regex demo(注意最捕獲組是多餘這裏,我把他們趕走此外,.必須逃到匹配一個點。)

[A-Za-z0-9_]+比賽1個或多個字母,數字或_

(A-Za-z0-9_)+匹配1個或多個序列A-Za-z0-9_(見demo)。

此外,在Java中,你可以使用\w匹配[A-Za-z0-9_]shorten your regex

#+ +\w+\.sh +#+ 

不要忘記,你需要在Java中的模式字符串(String pattern = "#+ +\\w+\\.sh +#+";)每個\一倍。