2015-06-18 70 views
2

我想建立正則表達式,檢查是否輸入的字符串是正則表達式,所以如果它包含|[然後](然後例如)Java正則表達式來發現正則表達式

A0[1-4].*Done or (L1 | L2).*Done' 

我已經構建了這樣簡單的東西:".[\\[]..[\\]]",但即使對於簡單的示例,它也不起作用。我試圖用Java的匹配和只是簡單的String.matches()

+0

一個正則表達式識別正則表達式...讓我想起了[這個XKCD的](http://xkcd.com/1313/) –

+0

正則表達式應該匹配什麼?一個_valid_正則表達式,或任何以某種方式看起來像正則表達式的東西,即包含典型的正則表達式字符? –

+0

我懷疑這是可能的。問題是正則表達式描述常規語言。而正則語言的其中一個特性是它們是'上下文無關的「,當然,正則表達式不是上下文無關的。所以,正則表達式本身並不是一個常規語言,所以不能用正則表達式來描述。同時,塔吉爾的答案應該適合你。 – mkrakhin

回答

7

您可以使用Java自身的解析器來檢查,如果輸入的是正則表達式或不:

public boolean isRegExp(String pattern) { 
    try { 
     Pattern.compile(pattern); 
     return true; 
    } 
    catch(PatternSyntaxException ex) { 
     return false; 
    } 
}