Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.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 为什么string.matches(“^[A-Z0-9\\-\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\,_Java_Regex_String - Fatal编程技术网

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:< /强>您不需要在字符类和连字符中逃出<代码> < <代码>(如果在开始或结束时使用)

很好知道,如果它为您工作,请考虑接受它。很好地知道,如果它对您有用,请考虑接受它。