Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 带drools的正则表达式(特殊字符/*)_Java_Regex_Drools - Fatal编程技术网

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

Java 带drools的正则表达式(特殊字符/*),java,regex,drools,Java,Regex,Drools,我正试图制定一个规则来捕捉无效字符。这些是&/*'”-- 我已经设法“捕捉”了所有的符号,除了/* 我的代码是: rule "Invalid Chars" when c : Class ( field matches ".*[&<>'\"].*|.*(--).*" ) then // DO SOMETHING end 规则“无效字符” 什么时候 c:类(字段匹配“*[&'\”]...*.-).*) 然后 //做点什么 结束 我的正则表达式在下面。

我正试图制定一个规则来捕捉无效字符。这些是&<>/*'”--

我已经设法“捕捉”了所有的符号,除了/*

我的代码是:

rule "Invalid Chars"
when
    c : Class ( field matches ".*[&<>'\"].*|.*(--).*" )
then
    // DO SOMETHING     
end
规则“无效字符”
什么时候
c:类(字段匹配“*[&'\”]...*.-).*)
然后
//做点什么
结束
我的正则表达式在下面。但是当我尝试添加/*符号时。我有这个正则表达式

.*[&<>'\"].*|.*(--).*|.*(\/\*).*
*[&'\“]..|.*(-).|.*(\/\*)*
但当我尝试运行时,会出现以下错误:

第1行:28字符“*”处没有可行的替代方案 第1行:33不匹配的字符“”应为“” java.lang.IllegalStateException:####错误### [错误:非法转义序列:*]~


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

以下是使用*转义但/非转义的最小测试:

public static void main(String[] args) {
    if("Hallo /* Test ".matches(".*[&<>'\"].*|.*(--).*|.*(/\\*).*")) {
        System.out.println("ILLEGAL");
    }
}
publicstaticvoidmain(字符串[]args){
如果(“Hallo/*Test”.matches(“.[&'\”]..*{
System.out.println(“非法”);
}
}

以下是使用*转义但/非转义的最小测试:

public static void main(String[] args) {
    if("Hallo /* Test ".matches(".*[&<>'\"].*|.*(--).*|.*(/\\*).*")) {
        System.out.println("ILLEGAL");
    }
}
publicstaticvoidmain(字符串[]args){
如果(“Hallo/*Test”.matches(“.[&'\”]..*{
System.out.println(“非法”);
}
}
试试这个:

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) );
} 
String pattern=“[&| | |'|\”|]|(-)|(\\/\*)”;
Pattern r=Pattern.compile(Pattern);
Matcher m=r.Matcher(“查找匹配项的字符串”);
而(m.find()){
System.out.println(“匹配值:+m.group(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) );
} 
String pattern=“[&| | |'|\”|]|(-)|(\\/\*)”;
Pattern r=Pattern.compile(Pattern);
Matcher m=r.Matcher(“查找匹配项的字符串”);
而(m.find()){
System.out.println(“匹配值:+m.group(0));
} 

/在正则表达式中没有什么特别之处-你不需要用\你不应该用“\\”来转义吗?我转义了/因为我在一个网站中创建正则表达式,它说:Error:unescaped forward slash./在正则表达式中没有什么特别的-你不需要用\你不应该用`\`来转义吗?我转义了/因为我在一个网站上创建正则表达式,它说:Error:unescaped forward slash。