0

我知道这是一个具有几乎相同名称的问题的副本,但是,我无法让它在 Android 中运行!

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

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

但是,这是行不通的。有谁知道应用这种模式的正确方法?

PS 在 Regex 完成新手。:D

从这里开始 -正则表达式匹配符号:!$%^&*()_+|~-=`{}[]:";'<>?,./

错误信息:Syntax error on token(s), misplaced construct(s)

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

4

3 回答 3

4

我认为你的问题是“

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

它正在结束你的字符串,所以你应该逃避它。您还需要在斜杠之前删除反斜杠,它不是特殊字符。

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

好的,再一次,你想匹配反斜杠,而不是转义斜杠,那么我们在这里结束:

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

现在它与 jdb 的答案相同,因此对他 +1 更快。

于 2013-01-25T09:09:04.917 回答
3

那个怎么样?

Pattern.compile("[-!$%^&*()_+|~=`{}\\[\\]:\";'<>?,.\\\\/]");
于 2013-01-25T09:14:41.770 回答
1

在一个字符类中,只有[]有特殊含义,所以你需要对它们进行转义。此外,在 Java 中,您需要使用额外的反斜杠进行转义。这就是 Java 特有的问题。因此,您需要使用\\[and \\]。是的,您需要"在字符串文字中使用单个反斜杠进行转义。

除此之外,连字符在中间某处使用时也具有特殊含义。如果要匹配 a hyphen,则需要在末尾使用它。

其余字符,不需要转义。他们只是普通的人物。

所以,你的模式应该是这样的: -

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

如果你也想匹配backslash (\),那么使用这个: -

Pattern bsymbols = Pattern.compile("[-!$%^&*()_+|~=`{}\\[\\]:\";'<>?,.\\\\/]");
于 2013-01-25T09:19:03.920 回答