Java正则表达式中的空格

Java正则表达式中的空格,java,regex,Java,Regex,我对Java和正则表达式都是新手 我想检测一个像这样的模式 第节: 我有一个代码片段 String line = "Section 12: sadfdggfgfgf"; Pattern ptn = Pattern.compile("Section [0-9+]:"); Matcher mtch = ptn.matcher(line); 当ptn=“节[0-9+]”时: mtch是假的 当 ptn=“第[0-9+] 字符串中的空格是否有我遗漏的地方? 我必须假设它们可能是

我对Java和正则表达式都是新手

我想检测一个像这样的模式 第节:

我有一个代码片段

    String line = "Section 12: sadfdggfgfgf";
    Pattern ptn = Pattern.compile("Section [0-9+]:");
    Matcher mtch = ptn.matcher(line);
当ptn=“节[0-9+]”时: mtch是假的

当 ptn=“第[0-9+]

字符串中的空格是否有我遗漏的地方?
我必须假设它们可能是也可能不是节之间的空格,并且

+
放在字符类之外,以便它匹配一个或多个数字<代码>[0-9+]
将只匹配给定列表中的一个字符(范围
0-9
+
中的数字)

运行此
“Section[0-9+]:”
regex时,它返回false,因为原始字符串中没有一个字符串
Section
后跟一个数字,也没有一个文本
+
后跟一个
(注意:原始字符串包含两位数字,后跟冒号,
第12节:SADFDGFGF


但是
“Section[0-9+]”
返回true,因为有一个字符串
Section
后跟一个数字。

+
放在字符类之外,以便它匹配一个或多个数字。
[0-9+]
将只匹配给定列表中的一个字符(范围
0-9
+
中的数字)

运行此
“Section[0-9+]:”
regex时,它返回false,因为原始字符串中没有一个字符串
Section
后跟一个数字,也没有一个文本
+
后跟一个
(注意:原始字符串包含两位数字,后跟冒号,
第12节:SADFDGFGF

但是
“第[0-9+]节”
返回true,因为有一个字符串
部分
后跟一个数字。

您需要将字符放在字符类之后。字符类定义一组字符,其中任何一个字符都可以匹配成功。当前,您正在将
0
的任何字符匹配到
9
+
exactly“一次”

对于带有冒号的模式,匹配返回false的原因是,正则表达式引擎试图在冒号前面有两个数字的单个数字后面匹配冒号。对于不带冒号的模式,它返回true的原因是正则表达式引擎能够在冒号后面匹配单个数字以下是“部分”

正确的语法是:

Section [0-9]+:
这将匹配“Section”,后跟空格字符,然后将
0
的任何字符匹配到
9
“一个或多个”时间和冒号。

您需要将字符放在字符类之后。字符类定义了一组字符,其中任何一个字符都可能出现,以使匹配成功。当前,您正在将
0
的任何字符匹配到
9
+
完全“一次”

对于带有冒号的模式,匹配返回false的原因是,正则表达式引擎试图在冒号前面有两个数字的单个数字后面匹配冒号。对于不带冒号的模式,它返回true的原因是正则表达式引擎能够在冒号后面匹配单个数字以下是“部分”

正确的语法是:

Section [0-9]+:

这将匹配“Section”后跟空格字符,然后匹配
0
9
的任何字符“一次或多次”和冒号。

如果要接受Section和数字之间的任意数量的字符串,请尝试以下正则表达式:

Pattern.compile("Section[\\s]*[\\d]+");
对于至少一个空间,请使用以下命令:

Pattern.compile("Section[\\s]+[\\d]+");
在java中,正则表达式\s匹配空格,\d匹配数字。但是,由于反斜杠启动转义序列,因此必须转义反斜杠本身,这就是为什么会以双反斜杠结束


您可以在此处阅读更多Java正则表达式和模式类:

如果要接受节和数字之间的任意数量的字符串,请尝试以下正则表达式:

Pattern.compile("Section[\\s]*[\\d]+");
对于至少一个空间,请使用以下命令:

Pattern.compile("Section[\\s]+[\\d]+");
在java中,正则表达式\s匹配空格,\d匹配数字。但是,由于反斜杠启动转义序列,因此必须转义反斜杠本身,这就是为什么会以双反斜杠结束

您可以在此处阅读更多Java正则表达式和模式类:

您可以使用此选项来确保此项匹配,而不管
空格是否在
部分
编号
之间


您可以使用此选项来确保匹配,而不管
号之间是否存在
空格

是否将节\s*[0-9]+\s*:处理数字和冒号之间可能存在任意数量空格的情况?@PW1981
节\s*[0-9]+\s*:
这将处理所有与空间相关的情况。Section\s*[0-9]+\s*:是否处理数字和冒号之间可能存在任意数量空格的情况?@PW1981
Section\s*[0-9]+\s*:
这将处理所有与空间相关的情况。