0

我为正则表达式编写了一个 Java 程序。我正在寻找正则表达式,如果在文本中找到除这些“N”、“E”、“W”、“S”之外的任何字符,它实际上会返回错误。我在我的程序中使用了这个 Pattern.matches("[^NWES]", str) 它没有用。

4

2 回答 2

4

您需要在正则表达式中使用量词:-

return Pattern.matches("[NWES]+", str);
于 2012-11-22T21:43:31.203 回答
0

看来您正在寻找匹配指南针的有效点。如果是这样,这并不像您的问题建议的那样简单。

一个有效的罗盘点是NSEW肯定的,但是:

  • 最多有两个不同的字母
  • N并且S永远不会同时出现
  • E并且W永远不会同时出现
  • 如果EorW出现两次,它们是第一个和最后一个,中间有一个NS
  • 对于两个字母的点,N andS appear beforeE andW`
  • ETC

现在可以将其表示为正则表达式,但此时将罗盘点放入enum并用于valueOf()验证输入会更简单、更容易且更有用(如果输入无效,则会引发 IllegalArgumentException)

于 2012-11-22T22:49:22.110 回答