Java中的正则表达式,如果任何字符不是“quot;N‘&引用;E‘&引用;W"&引用;S";找到
我已经为正则表达式编写了一个Java程序。 我在寻找正则表达式,如果在文本中找到除“N”、“E”、“W”、“S”以外的任何字符,它实际上会返回false。Java中的正则表达式,如果任何字符不是“quot;N‘&引用;E‘&引用;W"&引用;S";找到,java,regex,Java,Regex,我已经为正则表达式编写了一个Java程序。 我在寻找正则表达式,如果在文本中找到除“N”、“E”、“W”、“S”以外的任何字符,它实际上会返回false。 我使用了此模式。在我的程序中匹配(“[^NWES]”,str)它不起作用。您需要在正则表达式中使用量词:- return Pattern.matches("[NWES]+", str); 您需要在正则表达式中使用量词:- return Pattern.matches("[NWES]+", str); 看起来你在寻找与指南针的有效点相匹配的
我使用了此模式。在我的程序中匹配(“[^NWES]”,str)它不起作用。您需要在正则表达式中使用量词:-
return Pattern.matches("[NWES]+", str);
您需要在正则表达式中使用量词:-
return Pattern.matches("[NWES]+", str);
看起来你在寻找与指南针的有效点相匹配的东西。如果是这样的话,这并不像你的问题所建议的那样简单 有效的罗盘点由
NSEW
sure组成,但:
- 最多有两个不同的字母
和N
不会同时出现S
和E
不会同时出现W
- 如果
或E
出现两次,则它们是第一个和最后一个,中间是W
和N
S
- 对于两个字母点,N
S和
E出现在
W之前`和
- 等
现在,这可以表示为正则表达式,但在这一点上,将指南针点放在
枚举中,并用于验证输入(如果输入无效,则会引发IllegalArgumentException)似乎您正在寻找匹配指南针有效点的方法。如果是这样的话,这并不像你的问题所建议的那样简单
有效的罗盘点由NSEW
sure组成,但:
- 最多有两个不同的字母
N
和S
不会同时出现
E
和W
不会同时出现
- 如果
E
或W
出现两次,则它们是第一个和最后一个,中间是N
和S
- 对于两个字母点,N
和
S出现在
E和
W之前`
- 等
现在,这可以表示为正则表达式,但在这一点上,将指南针点放在枚举中,并用于验证输入(如果输入无效,将抛出IllegalArgumentException)只需添加一个量词即可<代码>+
或*
,由您选择。使用str.matches(regex)
,它更简短、更惯用。“它没有工作”(原文如此)不是一个好的bug报告。它到底是怎么不起作用的?只需添加一个量词<代码>+
或*
,由您选择。使用str.matches(regex)
,它更简短、更惯用。“它没有工作”(原文如此)不是一个好的bug报告。到底是怎么回事?嗯。。。我想你需要一个代码>在前面;)@m、 布特纳。。是 啊我没有注意到它应该返回false。仔细想想,我猜双重否定实际上有点违反直觉。也许最好只搜索[NWES]+
@m.buettner。是 啊在问题中迷失了一会儿。@m.buettner在这种情况下,您需要锚定^
和$
。嗯。。。我想你需要一个代码>在前面;)@m、 布特纳。。是 啊我没有注意到它应该返回false。仔细想想,我猜双重否定实际上有点违反直觉。也许最好只搜索[NWES]+
@m.buettner。是 啊在问题中迷失了一会儿。@m.buettner在这种情况下,您需要锚定^
和$
。