2015-04-17 51 views
0

我想寫一個正則表達式,會發現除'.'以外的所有內容 - 也就是說,只包含'.'的字符串應返回false和其他所有內容trueJava正則表達式來查找除''之外的所有內容。

String regex = "(?!(^\\.$)).*"; 
String test = "."; 
Pattern pattern = Pattern.compile(regex); 
Matcher matcher = pattern.matcher(test); 
System.out.println(matcher.find()); 
+1

有什麼問題合併? –

+0

我沒有看到你的代碼有什麼問題。你能明確指出問題是什麼嗎? – Unihedron

+0

我認爲這會完成這項工作[^ \\。$]。* –

回答

2
^(?![.]$).*$ 

這應該做它you.You需要使用anchors,以確保你不要讓任何部分匹配。

+0

這個正則表達式與原始正則表達式幾乎相同。 – Unihedron

+0

@Unihedro當'''在'[]'裏面時,你不需要逃避它,這將不會使'OP'的正則表達式會產生 – vks

+2

@LuiggiMendoza。 – vks

1

你真的需要這樣的正則表達式,只需使用字符串比較:

if (!".".equals(test)) { 
    // not equal to a dot 
} 
+2

不幸的是,我們正在使用的API只接受一個模式,並使用matcher.find來查找 – user3626708

+0

是否可以使用'if(!matcher.find())'? – anubhava

1

我認爲這將做的工作[^.].*|[.].+,我嘗試了http://www.regexplanet.com/advanced/java/index.html 15個不同的輸入,並試圖當它只是說假找 '。'

說明:

[^.].* - 匹配,沒有點字符開始的一切,並具有0以上的其他任何字符後,

[.].+ - 匹配以點開始的一切,隨後通過至少一個或多個任何其他字符。

[^.].*|[.].+ - 兩個部分與運營商「或」

+0

你用'find'方法測試過嗎?你的測試用例是什麼?你是否試圖匹配'$'? – Pshemo

+0

是的,但不幸的是,我發現輸入像'..'或'...'這個正則表達式失敗:( –

+0

我編輯,我認爲現在它的工作! –

相關問題