Java 为什么string.matches(“^[A-Z0-9\\-\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\,
但是为什么这不起作用呢Java 为什么string.matches(“^[A-Z0-9\\-\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\,,java,regex,string,Java,Regex,String,但是为什么这不起作用呢 String aStr="TEST-1-TV_50"; System.out.println(aStr.matches("^[A-Z0-9\\-\\_]+")); //TRUE. 为什么其给出的结果为false?在extractedStr中有一个尾随空格 因此它包含“TEST12-1-TV_50”(不是在最后的0后面有空格) 您可以将endIndex替换为asr.indexOf(“as”)(起始空间),或者只需在extractedStr上调用trim(): String
String aStr="TEST-1-TV_50";
System.out.println(aStr.matches("^[A-Z0-9\\-\\_]+")); //TRUE.
为什么其给出的结果为false?在
extractedStr
中有一个尾随空格
因此它包含“TEST12-1-TV_50”
(不是在最后的0后面有空格)
您可以将endIndex
替换为asr.indexOf(“as”)
(起始空间),或者只需在extractedStr
上调用trim()
:
String aStr1= "$local:TEST12-1-TV_50 as xs:boolean";
int strtIndex=aStr.indexOf(":");
int endIndex=aStr.indexOf("as");
String extractedStr=aStr1.substring(strtIndex+1,endIndex); //TEST12-1-TV_50
System.out.println(extractedStr.matches("^[A-Z0-9\\-\\_]+")); //FALSE.
extractedStr
中有一个尾随空格
因此它包含“TEST12-1-TV_50”
(不是在最后的0后面有空格)
您可以将endIndex
替换为asr.indexOf(“as”)
(起始空间),或者只需在extractedStr
上调用trim()
:
String aStr1= "$local:TEST12-1-TV_50 as xs:boolean";
int strtIndex=aStr.indexOf(":");
int endIndex=aStr.indexOf("as");
String extractedStr=aStr1.substring(strtIndex+1,endIndex); //TEST12-1-TV_50
System.out.println(extractedStr.matches("^[A-Z0-9\\-\\_]+")); //FALSE.
您还需要在字符类中包含空格:
String extractedStr=aStr1.substring(strtIndex+1,endIndex).trim();
或者在匹配之前调用trim()
extractedStr.matches("^[A-Z0-9 _-]+"); // true
PS:您不需要在字符类中转义。
,也不需要连字符(如果在开头或结尾使用)您还需要在字符类中包含空格:
String extractedStr=aStr1.substring(strtIndex+1,endIndex).trim();
或者在匹配之前调用trim()
extractedStr.matches("^[A-Z0-9 _-]+"); // true
<强> ps:< /强>您不需要在字符类和连字符中逃出<代码> < <代码>(如果在开始或结束时使用)
很好知道,如果它为您工作,请考虑接受它。很好地知道,如果它对您有用,请考虑接受它。