2
我想建立正则表达式,检查是否输入的字符串是正则表达式,所以如果它包含|
,[
然后]
,(
然后例如)
:Java正则表达式来发现正则表达式
A0[1-4].*Done or (L1 | L2).*Done'
我已经构建了这样简单的东西:".[\\[]..[\\]]"
,但即使对于简单的示例,它也不起作用。我试图用Java的匹配和只是简单的String.matches()
我想建立正则表达式,检查是否输入的字符串是正则表达式,所以如果它包含|
,[
然后]
,(
然后例如)
:Java正则表达式来发现正则表达式
A0[1-4].*Done or (L1 | L2).*Done'
我已经构建了这样简单的东西:".[\\[]..[\\]]"
,但即使对于简单的示例,它也不起作用。我试图用Java的匹配和只是简单的String.matches()
您可以使用Java自身的解析器来检查,如果输入的是正则表达式或不:
public boolean isRegExp(String pattern) {
try {
Pattern.compile(pattern);
return true;
}
catch(PatternSyntaxException ex) {
return false;
}
}
一个正则表达式识别正则表达式...让我想起了[这个XKCD的](http://xkcd.com/1313/) –
正则表达式应该匹配什么?一个_valid_正则表达式,或任何以某种方式看起来像正则表达式的东西,即包含典型的正则表达式字符? –
我怀疑这是可能的。问题是正则表达式描述常规语言。而正则语言的其中一个特性是它们是'上下文无关的“,当然,正则表达式不是上下文无关的。所以,正则表达式本身并不是一个常规语言,所以不能用正则表达式来描述。同时,塔吉尔的答案应该适合你。 – mkrakhin