[英]Regex to Match: !$%^&*()_+|~-=`{}[]:";'<>?,./
我知道这是一个几乎相同名称的重复问题,但是,我至今无法在Android中使用它!
我正在尝试:正则表达式匹配符号:
public Pattern bsymbols = Pattern.compile("[-!$%^&*()_+|~=`{}\\[\\]:\\";'<>?,.\/]");
但是,这不起作用。 有谁知道应用此模式的正确方法?
PS在Regex上完成菜鸟。 :D
从这里开始-正则表达式以匹配符号:!$%^&*()_ + |〜-=`{} []:“;'<>?,。/
错误消息: Syntax error on token(s), misplaced construct(s)
更新:添加了额外的反斜杠...修复了很多em,现在从;
获取错误;
向前。 使用Eclipse。
我认为您的问题是“
public Pattern bsymbols = Pattern.compile("[-!$%^&*()_+|~=`{}\[\]:";'<>?,.\/]");
^
它以字符串结尾,因此您应该对其进行转义。 另外,您需要在斜杠前删除反斜杠,这不是特殊字符。
public Pattern bsymbols = Pattern.compile("[-!$%^&*()_+|~=`{}\\[\\]:\";'<>?,./]");
好的,再一次,您想匹配反斜杠,而不是逃避斜杠,那么我们到这里:
public Pattern bsymbols = Pattern.compile("[-!$%^&*()_+|~=`{}\\[\\]:\";'<>?,.\\\\/]");
现在,它的答案与jdb的答案相同,因此对他+1表示更快。
那个怎么样?
Pattern.compile("[-!$%^&*()_+|~=`{}\\[\\]:\";'<>?,.\\\\/]");
在字符类中,只有[
和]
具有特殊含义,因此您需要对其进行转义。 另外,在Java中,您需要使用额外的反斜杠进行转义。 这就是Java特有的问题。 因此,您需要使用\\\\[
和\\\\]
。 是的,您需要在字符串文字中使用单个反斜杠转义"
。
除此之外,连字符在中间某个地方使用时也具有特殊含义。 如果要匹配hyphen
,则需要在末尾使用它。
其余字符,无需转义。 它们只是普通字符。
因此,您的模式应如下所示:
Pattern bsymbols = Pattern.compile("[-!$%^&*()_+|~=`{}\\[\\]:\";'<>?,./]");
如果还要匹配backslash (\\)
,请使用以下命令:-
Pattern bsymbols = Pattern.compile("[-!$%^&*()_+|~=`{}\\[\\]:\";'<>?,.\\\\/]");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.