Java 正则表达式30个数字+;空间+;海彭+;空间+;1号
我有这个代码来找到这个模式:201409250200131738007947036000-1,在文本中Java 正则表达式30个数字+;空间+;海彭+;空间+;1号,java,regex,Java,Regex,我有这个代码来找到这个模式:201409250200131738007947036000-1,在文本中 final String patternStr = "(\\d{30} - \\d{1})"; final Pattern p = Pattern.compile(patternStr); final Matcher m = p.matcher(page); if
final String patternStr = "(\\d{30} - \\d{1})";
final Pattern p = Pattern.compile(patternStr);
final Matcher m = p.matcher(page);
if (m.matches()) {
System.out.println("SUCCESS");
}
但是对于Java中的任何奇怪的重新定义都不起作用,有人能帮我一下错误在哪里吗?原因是
匹配方法检查整个给定字符串以匹配正则表达式
因此,也就是说,如果您的字符串是1234561234561234561234-8
它将匹配,如果它是我的号码1234561234561234561234-8在其他文本中
它将不会匹配
使用find
方法完成任务:
if (m.find()) {
System.out.println("SUCCESS");
}
它将在给定字符串内搜索,而不是尝试匹配整个字符串。原因是匹配方法检查整个给定字符串以匹配正则表达式
因此,也就是说,如果您的字符串是1234561234561234561234-8
它将匹配,如果它是我的号码1234561234561234561234-8在其他文本中
它将不会匹配
使用find
方法完成任务:
if (m.find()) {
System.out.println("SUCCESS");
}
它将在给定字符串中搜索,而不是尝试匹配整个字符串。从中,匹配
:
尝试根据图案匹配整个区域
与查找相反,查找以下内容:
尝试查找与模式匹配的输入序列的下一个子序列
因此,使用匹配
将整个字符串
与模式匹配,使用查找
在字符串
中定位模式
尝试:
我稍微编辑了一下您的模式,使其更加健壮。这将打印找到的每个匹配项。来自,匹配项
:
尝试根据图案匹配整个区域
与查找相反,查找以下内容:
尝试查找与模式匹配的输入序列的下一个子序列
因此,使用匹配
将整个字符串
与模式匹配,使用查找
在字符串
中定位模式
尝试:
我稍微编辑了一下您的模式,使其更加健壮。这将打印找到的每个匹配项。您是否试图在文本中查找该模式,检查整个字符串是否与该模式匹配?您也不需要使用括号。既然可以使用String.matches
,为什么还要使用模式匹配器?顺便说一句,你的代码运行得很好。你是在检查整个字符串是否与该模式匹配的文本中找到该模式吗?您也不需要使用括号。既然可以使用String.matches
,为什么还要使用模式匹配器?顺便说一下,你的代码运行良好。