难以创建涉及特殊字符的正则表达式

时间:2014-01-21 07:14:18

标签: java regex

我想创建一个与以下字符匹配的正则表达式

'<', '>', '(', ')', '[', ']', '\', '.', ',', ';', ':', '@', '"'

我构建了字符串

String reg = "< | > | \\( | \\) | \\[ | \\] | \\\\ | \\. | , | ; | : | @ | \" | \\s"

然而,当我执行以下操作时它似乎不起作用。

String s = "h\"; //this is passed in via console input, read by Scanner() if(s.matches(".*"+reg+".*") //do stuff

它不起作用。我不确定如何正确地将该字符串表示为正则表达式,我希望有人可以指出什么是关闭的。

2 个答案:

答案 0 :(得分:1)

请勿使用alternation,而是使用character class

[<>()\[\]\\,\.;:@\"]

字符类匹配方括号内的一个字符。

在Java中:

String reg = "[<>()\\[\\]\\\\,\\.;:@\"\\s]"

答案 1 :(得分:0)

String regex = "[<>\\(\\)\\[\\]\\\\,\\.;:@\"]";