gpt4 book ai didi

regex - 使用正则表达式拆分文本和内联注释

转载 作者:行者123 更新时间:2023-12-04 08:34:25 25 4
gpt4 key购买 nike

我的目标是解析这两种类型的文本:Any#text;more ; a commentAny#text;more # a commentAny#text;no comment它是带有可选注释的任意文本行。评论指示符是 #;前面至少有一个空格。
我之前的做法是 ^(?<value>([^#;])+)(\s*[#;](?<comment>.*))?$那是一组value接受除评论指示符之外的所有内容,后跟可选的指示符和组 comment .
这很有效,直到我意识到,有时我的值中也有注释指示符。
从一个小时开始,我正在尝试使用 regex101.com 验证器和调试器进行分组、pos/neg 前瞻/后视,但我完全卡住了。
我能得到的最好的是 ^(?<value>(.+(?=\s#|\s;)))(\s*[#;](?<comment>.*))?$这将非常好的值(value)和评论分开,但现在评论在某种程度上是强制性的。
任何人都可以指出我正确的方向吗?
ps:在c#中使用它,是的,它必须是正则表达式,不,它没有作业;-)

最佳答案

对于您所描述的情况,您可以尝试使用这个重构的正则表达式:

^(?<value>.+?(?=\s[;#]|$))(?:\s*[#;](?<comment>.*))?$
RegEx Demo
正则表达式详情:
  • ^ : 开始
  • (?<value> : 启动命名捕获组 value
  • .+? : 匹配 1+ 个任意字符(非贪婪)
  • (?=\s[;#]|$) :先行断言我们有一个空格,后跟 #;否则 (对于没有注释的行)提前结束

  • ) : 结束捕获组value
  • (?: : 开始一个非捕获组
  • \s*[#;] : 匹配 0+ 个空格,后跟 #;
  • (?<comment>.*) : 命名捕获组 comment匹配所有内容直到结束

  • )? : 结束可选的非捕获组
  • $ : 完
  • 关于regex - 使用正则表达式拆分文本和内联注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64868259/

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