Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.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 为什么添加空格会使我的正则表达式出错?_Java_Regex - Fatal编程技术网

Java 为什么添加空格会使我的正则表达式出错?

Java 为什么添加空格会使我的正则表达式出错?,java,regex,Java,Regex,上述正则表达式与Q1不匹配。QEQWEWQEQEQERQER 但是如果我在| (^\s*\d+\)(.*) | ) | (^\s*Q\d+\.\s*(.*)) 它和我的字符串匹配 空白是什么意思?它是否等于\s?它会影响我的可读性。正则表达式的内容100%适用于确定输入是否匹配。您的想象力不会改变正则表达式的处理 正则表达式“\dignore this part\d”与输入“12”不匹配,但与输入“1ignore this part2”匹配。不管在想象中“忽略此部分”将被跳过多少,它仍然是正则

上述正则表达式与
Q1不匹配。QEQWEWQEQEQERQER

但是如果我在
|

(^\s*\d+\)(.*) | ) | (^\s*Q\d+\.\s*(.*))
它和我的字符串匹配


空白是什么意思?它是否等于
\s
?它会影响我的可读性。

正则表达式的内容100%适用于确定输入是否匹配。您的想象力不会改变正则表达式的处理

正则表达式“\dignore this part\d”与输入“12”不匹配,但与输入“1ignore this part2”匹配。不管在想象中“忽略此部分”将被跳过多少,它仍然是正则表达式的一部分


在您的情况下,额外的空格是“忽略此部分”的形式。

正则表达式的内容100%适用于确定输入是否匹配。您的想象力不会改变正则表达式的处理

正则表达式“\dignore this part\d”与输入“12”不匹配,但与输入“1ignore this part2”匹配。不管在想象中“忽略此部分”将被跳过多少,它仍然是正则表达式的一部分


在您的例子中,额外的空格是“忽略此部分”的形式。在正则表达式模式中,空格是与空格匹配的有意义的原子。如果您需要使用空格、制表符和换行符格式化模式(使用正则表达式引擎不会考虑的空格),您可以使用
(?x)
修饰符或标志

然后,要使用
(?x)
选项匹配这种模式中的文本空间,您需要转义空间来匹配文本空间。或者,您可以考虑将任何空白与“代码> > >:

匹配。
(^\s*\d+\)(.*) | )|(^\s*Q\d+\.\s*(.*))

请注意,如果添加
(?U)
修饰符、标志,
\s
将匹配所有Unicode空白(如
[\p{Zs}\t\r\n]
)。

在正则表达式模式中,空格是匹配空格的有意义的原子。如果您需要使用空格、制表符和换行符格式化模式(使用正则表达式引擎不会考虑的空格),您可以使用
(?x)
修饰符或标志

然后,要使用
(?x)
选项匹配这种模式中的文本空间,您需要转义空间来匹配文本空间。或者,您可以考虑将任何空白与“代码> > >:

匹配。
(^\s*\d+\)(.*) | )|(^\s*Q\d+\.\s*(.*))

请注意,如果添加
(?U)
修饰符、标志,
\s
将匹配所有Unicode空格(如
[\p{Zs}\t\r\n]
)。

是的,空格会影响正则表达式。不,它不等同于
\s

\s
相当于字符类
[\t\r\n\f]
——即匹配任何空白字符的字符类。因此,虽然您的格式空间包含在
\s
中,但它们并不等同于它

正如评论中所说,文本空白在正则表达式中很重要。事实上,我相信这会导致您的第一个备选方案(子模式
(^\s*\d+\)(.*)
)出现错误

如果我读对子模式的意图,它应该匹配表单的文本

\s  A whitespace character: [ \t\n\x0B\f\r]
但它将:

  • 仅当后跟空格时才匹配此文本
  • 也可以匹配单个文本空间
  • 构造此子模式的更好方法是
    (^\s*\d+\)(.*)
    ,将结束空间和交替处理在一起。此外,为了提高可读性,我们可以这样做:

    2) some_text
    
    它只在问题编号格式上交替,而不是整个模式


    是的,空格会影响正则表达式。不,它不等同于
    \s

    \s
    相当于字符类
    [\t\r\n\f]
    ——即匹配任何空白字符的字符类。因此,虽然您的格式空间包含在
    \s
    中,但它们并不等同于它

    正如评论中所说,文本空白在正则表达式中很重要。事实上,我相信这会导致您的第一个备选方案(子模式
    (^\s*\d+\)(.*)
    )出现错误

    如果我读对子模式的意图,它应该匹配表单的文本

    \s  A whitespace character: [ \t\n\x0B\f\r]
    
    但它将:

  • 仅当后跟空格时才匹配此文本
  • 也可以匹配单个文本空间
  • 构造此子模式的更好方法是
    (^\s*\d+\)(.*)
    ,将结束空间和交替处理在一起。此外,为了提高可读性,我们可以这样做:

    2) some_text
    
    它只在问题编号格式上交替,而不是整个模式


    文本空白对于正则表达式是有意义的。如果需要将模式设置为“格式化”空白,请在模式前加上
    (?x)
    。@WiktorStribiżew谢谢。有意义吗?它是否等于
    \s
    ?不,
    \s
    匹配的不仅仅是一个空格,如制表符、换行符、CR.@WiktorStribiżew请告诉我空格的含义。如果可能的话,添加一个答案。我接受。文字空白对于正则表达式是有意义的。如果需要将模式设置为“格式化”空白,请在模式前加上
    (?x)
    。@WiktorStribiżew谢谢。有意义吗?它是否等于
    \s
    ?不,
    \s
    匹配的不仅仅是一个空格,如制表符、换行符、CR.@WiktorStribiżew请告诉我空格的含义。如果可能的话,添加一个答案。我会接受的。太棒了。谢谢你的额外提示。谢谢你再给我来点酒谢谢:):)喝完了谢谢:):)