Java Regex - 试图创建一个特定的模式,但我不太清楚该怎么做

时间:2012-02-09 01:39:35

标签: java regex

在我的Java应用程序中,我正在尝试指定一个模式,该模式可以匹配任何不是由大写字母,小写字母或短划线组成的模式。所以我希望它匹配任何不包含A-Z,a-z或' - '的东西。我是新手使用正则表达式,所以我只想看看我是否接近正确。这就是我所拥有的:

Pattern.compile("[^A-Z]&&[^a-z]&&[^\\-]");

我甚至不确定我是否需要短划线的转义字符,或者如果我需要,它是否应该是两个反斜杠而不是一个。我也不确定整体格式。谢谢你的帮助。

2 个答案:

答案 0 :(得分:3)

建立@ Joe的回答:

Pattern.compile("[^A-Za-z\\-]");

但是你需要使用双重反弹,因为你需要逃避逃离\的{​​{1}}

答案 1 :(得分:1)

你不需要说“AND NOT”,你可以把它们全部放在一起:

Pattern.compile("[^A-Za-z\-]");

关于转义,单个反斜杠\会立即转义该字符,因此\-会为您提供文字-字符,\\会为您提供文字\字符。在您的原始帖子中,\\-转义反斜杠而不是连字符,因此您最终匹配“不反斜杠或连字符”。