带有drools的正则表达式(特殊字符/ *)

时间:2015-11-26 11:25:20

标签: java regex drools

我正试图制定一条规则来捕捉无效的特征。这些是& < > / *'“ -

我已经设法“捕获”除了/ *

之外的所有符号

我的代码是:

rule "Invalid Chars"
when
    c : Class ( field matches ".*[&<>'\"].*|.*(--).*" )
then
    // DO SOMETHING     
end

我的正则表达式如下。但是当我尝试添加/ *符号时。我得到这个正则表达式

.*[&<>'\"].*|.*(--).*|.*(\/\*).*

但是当我尝试跑步时,我得到了这个错误:

  

第1:28行没有可行的替代字符'*'   第1:33行不匹配的字符''期待'''   java.lang.IllegalStateException:### errors ###   [错误:非法转义序列:*]〜

如何“捕获”所有这些无效字符?

2 个答案:

答案 0 :(得分:0)

这是使用*转义的最小测试但是/不是:

public static void main(String[] args) {
    if("Hallo /* Test ".matches(".*[&<>'\"].*|.*(--).*|.*(/\\*).*")) {
        System.out.println("ILLEGAL");
    }
}

答案 1 :(得分:0)

试试这个:

String pattern = "[&|<|>|'|\"|]|(--)|(\\/\\*)";
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher("YOUR STRING TO FIND MATCHES");
while (m.find( )) {
    System.out.println("Matched value: " + m.group(0) );
}