要检查的Java正则表达式是什么=2245“;或545“;或22",;,等
好的,我想检查一个字符串是否以要检查的Java正则表达式是什么=2245“;或545“;或22",;,等,java,regex,Java,Regex,好的,我想检查一个字符串是否以=作为第一个字符,然后后跟任何数字,如果=&number之间有空格,那么也可以 好的,这是一个例子 String s="=2245"; --> return true String s="= 545"; --> return true String s="= 22"; --> return true String s="= m 545"; --> return false String s="=m545"; --> return
=
作为第一个字符,然后后跟任何数字,如果=
&number之间有空格,那么也可以
好的,这是一个例子
String s="=2245"; --> return true
String s="= 545"; --> return true
String s="= 22"; --> return true
String s="= m 545"; --> return false
String s="=m545"; --> return false
这就是我所做的
if(s.matches("=[0-9]+")){
return true;
}
如果=
&number之间没有空格,则此操作将起作用
因此,我改为:
if(s.matches("=\\s[0-9]+")){
return true;
}
然后,如果=
&number&之间有1个空格,则在其他情况下不起作用
那么如何修复它呢
"=\\s*\\d+"
*
表示“零次或多次重复”,因此,如果有空格或没有空格,这将起作用。\d
是编写[0-9]
的另一种方法。您可以使用以下正则表达式:
^=[ ]*[0-9]+$
向您显示哪些匹配,哪些不匹配
解释
锚定声明我们位于字符串的开头^
匹配文本=
=
匹配可选空格。你不需要括号,但它更容易阅读[]*
匹配一个或多个数字[0-9]+
锚点断言我们在字符串的末尾$
Pattern regex = Pattern.compile("^=[ ]*[0-9]+$");
Matcher regexMatcher = regex.matcher(subjectString);
if (regexMatcher.find()) {
ResultString = regexMatcher.group();
}
你应该使用*这意味着“零或更多”
检查此项尝试使用
=\s*\d+
\s*
表示空白(\n\r\t\f和“”)
(0或
更多次(与最多金额匹配)
如果您使用
匹配
而不是更复杂的选项,那么使用^
和$
是没有意义的。同样,将单个字符括在方括号中也没有意义。使用的OP与匹配。你把事情弄得复杂多了。没有明显的原因。需要^
和$
只不过是您将其变得过于复杂的一个副作用。@DavidWallace如果您正在重用regex.FYI Tum,经常使用正则表达式的人普遍认为,如果你能用^
和$
锚定你的正则表达式。。。这样做。如果一个Java方法允许您不使用它们。。。仍然使用它们,因为当你发现自己在不同的环境(甚至是文本编辑器)中使用regex时,这是最容易忘记的事情。@DavidWallace你把这件事弄得太复杂了
是的,我真的很努力。。。英雄联盟真的,这是很好的声音正则表达式,我不知道你在说什么。既然你这么想挑剔我的发音。。。您的\s*
还匹配制表符、换行符、垂直制表符。。。根本不是他想允许的!
if(s.matches("=\\s*\\d+")){
return true;
}