2011-05-25 61 views

回答

3

[a-zA-Z. ]+允許字母,點和空格字符。

import java.util.regex.*; 

public class Test { 
    public static void main(String [] args) throws Exception { 
    String RE = "[a-zA-Z. ]+"; 
    String name = args[0]; 
    Pattern pattern = Pattern.compile(RE); 

    Matcher m = pattern.matcher(name); 
    System.err.println("`" + RE + 
         (m.matches()?"' matches `":"' does not match `") + 
         name + "'"); 
    } 
} 

運行:

$ java Test "R. Robert" 
`[a-zA-Z., ]+' matches `R. Robert' 

$ java Test "R.-Robert" 
`[a-zA-Z., ]+' does not match `R.-Robert' 
5

使用反斜線點:\.

+0

我們在這裏Java世界中,他可能需要轉義反斜線以及「\\」。 – 2011-05-25 10:07:54

+1

@詹姆斯 - 這可能是真的,但取決於字符串被指定的位置。如果它在Java源代碼中,那麼是的,但如果它來自配置文件(或任何其他非源位置),那麼它不會。我不會將其作爲答案的一部分,因爲這是正確的,正則表達式字符串需要是'\'。你輸入的方式可能因環境而異,但恕我直言不在問題的範圍之內。 – 2011-05-25 10:12:26

2

來搜索您通常需要逃避它一個正則表達式一個點,因爲它是一個特殊字符。

使用\.來逃避。

您不必逃避,如果它是一個捕獲組的一部分:

[A-Za-z.]將搜索的字母和「」字符。

2

你的問題不是很清楚 - 對於初學者來說,正則表達式不允許「允許」或「禁止」任何東西,它們只是匹配(或不匹配)文本。調用正則表達式的代碼將決定要做什麼(例如正則表達式搜索無效字符的部分匹配項,或者爲整個白名單指定一個匹配項等)。

如果你要求如何在正則表達式中包含文字.字符,則需要轉義它 - 這在(幾乎?)所有正則表達式引擎意味着在其前面帶有反斜槓。

例如,正則表達式:

P\..R 

裝置 「的資本P,然後過一段,那麼任何字符,則資本R(。)」,並且將匹配

P.AR 
P..R 
P.$R 

但不

PEAR 
PA.R 
P. 
P\.AR 

0

角色。是。

例如,如果你想獲得的字母和點:[。\ w]

+

+2

「人物是。」只在你的例子中的字符類中。通常'''必須逃脫。 – stema 2011-05-25 10:14:52