我为正则表达式编写了一个 Java 程序。我正在寻找正则表达式,如果在文本中找到除这些“N”、“E”、“W”、“S”之外的任何字符,它实际上会返回错误。我在我的程序中使用了这个 Pattern.matches("[^NWES]", str) 它没有用。
问问题
102 次
2 回答
4
您需要在正则表达式中使用量词:-
return Pattern.matches("[NWES]+", str);
于 2012-11-22T21:43:31.203 回答
0
看来您正在寻找匹配指南针的有效点。如果是这样,这并不像您的问题建议的那样简单。
一个有效的罗盘点是NSEW
肯定的,但是:
- 最多有两个不同的字母
N
并且S
永远不会同时出现E
并且W
永远不会同时出现- 如果
E
orW
出现两次,它们是第一个和最后一个,中间有一个N
和S
- 对于两个字母的点,N
and
Sappear before
Eand
W` - ETC
现在可以将其表示为正则表达式,但此时将罗盘点放入enum
并用于valueOf()
验证输入会更简单、更容易且更有用(如果输入无效,则会引发 IllegalArgumentException)
于 2012-11-22T22:49:22.110 回答