在我的Java应用程序中,我正在尝试指定一个模式,该模式可以匹配任何不是由大写字母,小写字母或短划线组成的模式。所以我希望它匹配任何不包含A-Z,a-z或' - '的东西。我是新手使用正则表达式,所以我只想看看我是否接近正确。这就是我所拥有的:
Pattern.compile("[^A-Z]&&[^a-z]&&[^\\-]");
我甚至不确定我是否需要短划线的转义字符,或者如果我需要,它是否应该是两个反斜杠而不是一个。我也不确定整体格式。谢谢你的帮助。
答案 0 :(得分:3)
建立@ Joe的回答:
Pattern.compile("[^A-Za-z\\-]");
但是你需要使用双重反弹,因为你需要逃避逃离\
的{{1}}
答案 1 :(得分:1)
你不需要说“AND NOT”,你可以把它们全部放在一起:
Pattern.compile("[^A-Za-z\-]");
关于转义,单个反斜杠\
会立即转义该字符,因此\-
会为您提供文字-
字符,\\
会为您提供文字\
字符。在您的原始帖子中,\\-
转义反斜杠而不是连字符,因此您最终匹配“不反斜杠或连字符”。