2015-06-18 66 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; 
    } 
}