Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/207.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 要匹配的正则表达式:!$%^&*()_+|~-=`{}[]:";'?,./_Java_Android_Regex - Fatal编程技术网

Java 要匹配的正则表达式:!$%^&*()_+|~-=`{}[]:";'?,./

Java 要匹配的正则表达式:!$%^&*()_+|~-=`{}[]:";'?,./,java,android,regex,Java,Android,Regex,我知道这是一个名称几乎相同的问题的重复,但是,我无法让它在Android中工作——不管怎样 我正在尝试:正则表达式匹配符号: public Pattern bsymbols = Pattern.compile("[-!$%^&*()_+|~=`{}\\[\\]:\\";'<>?,.\/]"); 但是,这不起作用。有人知道应用此模式的正确方法吗 注:在正则表达式中填写noob。:D 从这里开始 错误消息:令牌语法错误,构造错误 更新:添加了额外的反斜杠…修复了很多em,现在从

我知道这是一个名称几乎相同的问题的重复,但是,我无法让它在Android中工作——不管怎样

我正在尝试:正则表达式匹配符号:

public Pattern bsymbols = Pattern.compile("[-!$%^&*()_+|~=`{}\\[\\]:\\";'<>?,.\/]");
但是,这不起作用。有人知道应用此模式的正确方法吗

注:在正则表达式中填写noob。:D

从这里开始

错误消息:令牌语法错误,构造错误


更新:添加了额外的反斜杠…修复了很多em,现在从;开始出现错误。使用Eclipse。

我认为您的问题是

public Pattern bsymbols = Pattern.compile("[-!$%^&*()_+|~=`{}\[\]:";'<>?,.\/]");
                                                                  ^
它是字符串的结尾,因此您应该对其进行转义。此外,您需要在斜杠之前删除反斜杠,因为它不是特殊字符

public Pattern bsymbols = Pattern.compile("[-!$%^&*()_+|~=`{}\\[\\]:\";'<>?,./]");
好的,再一次,你想匹配反斜杠,而不是逃避斜杠,然后我们在这里结束:

public Pattern bsymbols = Pattern.compile("[-!$%^&*()_+|~=`{}\\[\\]:\";'<>?,.\\\\/]");
现在的答案是相同的,比jdb的,所以+1对他来说更快。

怎么样

Pattern.compile("[-!$%^&*()_+|~=`{}\\[\\]:\";'<>?,.\\\\/]");

在字符类中,只有[和]具有特殊含义,因此需要对其进行转义。另外,在Java中,需要使用额外的反斜杠进行转义。这是Java特有的问题。因此,需要使用\\[和\\]。是的,需要使用字符串文字中的单个反斜杠进行转义

除此之外,连字符在中间使用时,也有特殊含义。如果你想与连字符匹配,你需要在结尾使用它。

其余的字符不需要转义,它们只是普通字符

因此,您的模式应该如下所示:-

Pattern bsymbols = Pattern.compile("[-!$%^&*()_+|~=`{}\\[\\]:\";'<>?,./]");

又是反斜杠的问题吗?当反斜杠在编程语言中是字符串文字转义时,应该使用两个反斜杠来获得一个到regexp的反斜杠engine@RohitJain它在Eclipse中不断地加下划线,表示一个错误。@Asryael..这个错误消息在这里非常有用。如果要指定,请使用\\a\如果根据语言,它不是转义序列的一部分。IntelliJ IDEA很好地支持regexps语法突出显示+即时匹配用户输入。还需要双重转义\[和\].@stema需要转义什么;?复制粘贴表达式后仍然没有得到任何爱。-无效的转义序列有效的是\b\t\n\f\r\\\\\\\\\您需要esape。“”?“+”*“{}”[]'因为它们在regexp中都是特殊字符,在java中必须使用双反斜杠来转义character@AdamL.Mónos除[,\和]以外的所有特殊字符是字符本身在字符类中。谢谢您的回答。它适用于列出的字符,但是如果我是正确的,您缺少反斜杠字符。\n也应该在字符类中转义。@Asryael..是的,添加了这个。我以为您使用它来转义/。但是要匹配反斜杠,您需要使用四个反斜杠两个用于正则表达式,两个用于Java。您不需要在字符类中转义和。
Pattern bsymbols = Pattern.compile("[-!$%^&*()_+|~=`{}\\[\\]:\";'<>?,.\\\\/]");