gpt4 book ai didi

.net - 了解 .net 中已编译的正则表达式

转载 作者:行者123 更新时间:2023-12-05 01:35:57 25 4
gpt4 key购买 nike

我有一个将重复使用的正则表达式,其中 stringLiteral 会因一次调用而异。

一个是:

.*(^stringLiteral Number 1\r?\n)([\w|\s][^\r\n]+)(.+)

下一个是:

.*(^stringLiteral Number 2\r?\n)([\w|\s][^\r\n]+)(.+)

这里有优化的机会吗?

编辑:为了更明确地说明我正在处理的实时数据 - 我正在解析包含名称/值对的电子邮件正文。我知道名称(标签)并且我知道我所追求的值是标签后面的那一行。但我不能确定名称/值对(行)总是会以相同的顺序排列 - 所以我无法构建一个大表达式。

我必须构建多个表达式来丢弃从 block 开头到给定标签(这将是 stringLiteral)的所有内容;将下一行捕获到捕获组中;然后丢弃该行之后的所有内容。

所以这一行捕获名称字段

myOrder.Name = Regex.Replace(resultString, @".*(^Name\r\n)([\w|\s][^\r\n]+)(.+)", "$2", RegexOptions.Multiline | RegexOptions.Singleline);

并且这一行捕获了价格字段

myOrder.Price= Regex.Replace(resultString, @".*(^Price\r\n)([\w|\s][^\r\n]+)(.+)", "$2", RegexOptions.Multiline | RegexOptions.Singleline);

最佳答案

好吧,如果你愿意,你可以将它们压缩成一个表达式:

.(^stringLiteral Number [12]\r?\n)([\w|\s][^\r\n]+)(.+)

如果您发布要匹配或捕获的输入示例,我可能会提供更多帮助。

关于.net - 了解 .net 中已编译的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5937090/

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