gpt4 book ai didi

javascript - 标签的正则表达式一开始在 C# 中不起作用,但在 Javascript 中起作用

转载 作者:行者123 更新时间:2023-11-29 21:05:59 25 4
gpt4 key购买 nike

伙计们!

我写了我需要的这种正则表达式

^((#\w+\b(\s?|#))+)

它工作正常...但只有 here (在 Javascript 模式下)。 enter image description here

如您所见,它会突出显示所有行,直到没有主题标签符号的文本开始(我只需要从文本的最开头获取它们)。

如果我在 http://regexstorm.net/tester 尝试这样的事情它看起来像这样(所以我不需要完全捕获的部分,ECMAScript 选项也无济于事) enter image description here

为 C# 修复它的最佳方法是什么?为什么它不能像那样工作(因为在 regex101 的其他选项中一切看起来都不错)?

最佳答案

主要问题是Regex101和RegexStorm站点之间的换行样式不同:第一个使用LF,后者使用CRLF样式。因此,仅匹配 1 个或 0 个空格的 \s? 无法在 RegexStorm 中找到匹配项,因为第一行末尾和第二行开头之间有两个空格。

您可能会修复它,将 \s? 更改为 \s*(或至少 \s{0,2} 以匹配 0到 2 个空格)。

但是,您的正则表达式需要改进,因为它对正则表达式引擎造成了过多的开销。你可以线性地写成

^#\w+(?:\s*#\w+)*

参见 RegexStorm regex demo .它匹配一个主题标签,后跟 0+ 个由 0+ 个空格组成的序列和一个主题标签。

请注意,^ 可以重新定义以匹配 的开头。为避免这种情况,在 .NET 中,您可以使用始终匹配字符串开头的 \A anchor 。

图案细节:

  • ^(或 \A)- 字符串的开头
  • #\w+ - # 后跟 1+ 个单词字符
  • (?:\s*#\w+)* - 零个或多个序列:
    • \s* - 零个或多个空格
    • #\w+ - 标签模式。

关于javascript - 标签的正则表达式一开始在 C# 中不起作用,但在 Javascript 中起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44069201/

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