Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
要检查的Java正则表达式是什么=2245“;或545“;或22",;,等_Java_Regex - Fatal编程技术网

要检查的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]+
    匹配一个或多个数字
  • $
    锚点断言我们在字符串的末尾
在Java中:

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;
}