gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 06:53:37 26 4
gpt4 key购买 nike

(^\s*\d+\)(.*) | ) | (^\s*Q\d+\.\s*(.*))

上面的正则表达式不匹配 Q1。 qeqwewqeqeq qerqer

但是如果我删除 |

前后的空格
(^\s*\d+\)(.*) | )|(^\s*Q\d+\.\s*(.*))

它匹配我的字符串。

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

最佳答案

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

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

正如评论中所说,文字空格在正则表达式中很重要。事实上,我相信它会导致您的第一个备用错误(子模式 (^\s*\d+\)(.*) | ))。

如果我没看错那个子模式的意图,它应该匹配表单的文本

2) some_text

但它会:

  1. 仅匹配后跟空格的文本
  2. 也匹配单个文字空格

构建此子模式的更好方法是 (^\s*\d+\)(.*)),将结束空格和交替一起处理。此外,为了提高可读性,我们可以这样做:

(^\s*(?:Q\d+\.|\d+\))\s*(.*))

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

Demo on Regex101

关于java - 为什么添加空格会使我的正则表达式出错?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39773838/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com