Java 检查字符串,正则表达式问题?

Java 检查字符串,正则表达式问题?,java,string,loops,Java,String,Loops,目前,我正在检查以下字符串: if(parseCommand.contains("vlan1") || parseCommand.contains("Fa0/1i") || parseCommand.contains("Fa0/1o") || parseCommand.contains("Fa1/0") || parseCommand.contains("Fa1/1") || parseCommand.contains("Fa1

目前,我正在检查以下字符串:

if(parseCommand.contains("vlan1") || parseCommand.contains("Fa0/1i")
  || parseCommand.contains("Fa0/1o") || parseCommand.contains("Fa1/0")                              
  || parseCommand.contains("Fa1/1") || parseCommand.contains("Fa1/2")
  || parseCommand.contains("Fa1/3") || parseCommand.contains("Fa1/4")
  || parseCommand.contains("Fa1/5") || parseCommand.contains("Fa1/6")                                    
  || parseCommand.contains("Fa1/7") || parseCommand.contains("Fa1/8") 
  || parseCommand.contains("Fa1/9") || parseCommand.contains("Fa1/11") 
  || parseCommand.contains("Gi0")) {
//do things here                              
}
然而,它可能包含vlan1到vlan4094,我必须检查这些。最简单的方法是什么

我试过这样做,只是为了匹配一个0-3位数的vlan 1-9,但没有找到任何结果:

if(parseCommand.matches(".*vlan[1-9](\\d){0,3}") || parseCommand.contains("Fa0/1i")
  || parseCommand.contains("Fa0/1o")|| parseCommand.contains("Fa1/0")                               
  || parseCommand.contains("Fa1/1") || parseCommand.contains("Fa1/2")
  || parseCommand.contains("Fa1/3") || parseCommand.contains("Fa1/4")
  || parseCommand.contains("Fa1/5") || parseCommand.contains("Fa1/6")                                    
  || parseCommand.contains("Fa1/7") || parseCommand.contains("Fa1/8") 
  || parseCommand.contains("Fa1/9") || parseCommand.contains("Fa1/11") 
  || parseCommand.contains("Gi0")) {
即使我尝试了,也没有发现,为什么


if(parseCommand.matches(“.*vlan.*”

对于被
捕获的新行字符,使用
.matches((?).*vlan.*)
左右;请参阅。

这应该足够了
vlan[\\d]{1,4}
我想。你能给出一个示例命令来测试吗?你想要什么类型的命令?任何包含vlan1-vlan4094的字符串,任何东西都可以在我之前或之后出现,我可能会遗漏一些东西。但是我不确定你应该在正则表达式中包含这些句点吗?正则表达式看起来很好,就像
“vlan1”。匹配(.*vlan[1-9](\\d){0,3})
返回
true
。您确定parseCommand包含
“vlan1”
?我确定,因为parseCommand.contains(“vlan1”)工作正常。我在使用@Mementori和不使用@Mementori时都试过,都不起作用,将重试。在vlan[\\d]{1,4}中找不到任何内容方法,可能需要。*这很有效,谢谢,我不明白为什么其他答案不起作用?然后字符串中有一个换行字符
\n
,而该字符与
不匹配。命令
(?s)
也匹配dot的
\n
。我明白了,换行符必须直接出现在vlan之前或之后才能影响它,还是字符串中的任何地方换行符都很重要?如果没有
(?s)
,第一个
*
不匹配(如果换行符出现在“vlan”之前),或者如果换行符出现在“vlan”之后,第二个
*
。顺便说一下,
\r
也与
(?s)
DOTALL匹配。