gpt4 book ai didi

c# - 正则表达式忽略模式

转载 作者:太空宇宙 更新时间:2023-11-03 16:17:55 25 4
gpt4 key购买 nike

我有一段带有一些注释标记的文本。方括号“(”和“)”或“[”和“]”用于确定注释的一部分(就像在普通文本中一样,就像这句话一样)。我想对其执行正则表达式以在输入中搜索某些内容,但是......它应该忽略所有注释。

问题是:

  • 它们可以出现在任何地方(我不知道在哪里和有多少)
  • 我不能轻易去除它们(执行替换正则表达式以消除所有出现),因为在原始文本中执行搜索正则表达式后我需要知道索引和长度
  • 在处理大量输入文本时必须尽可能快

注解不能嵌套,不会出现“123(Hello(World))”之类的。如果注释括号是字符串的一部分(在引号中),则它们是文本的一部分,因此没有注释。

这是一个例子:

Input Text: "Hello, my (real) name is John. I worked in England (near London) on a real german restaurant.".

Search Regex: "my.*?real"

Output: "my (real) name is John. I worked in England (near London) on a real" (index=7, length=67)

解决这个问题的最佳方法是什么?

最佳答案

我想知道在这种情况下 RegEx 是不是你的 friend 。特别是因为您想要最快的算法,也许您应该将其实现为状态机。

本质上,一次一个字符地遍历字符串并保留一堆匹配的注释定界符。只要您不在注释内,还要注意您要匹配的字符串。

澄清问题:您能否假设您要搜索的文本是固定文字?你关心空格的数量吗?我问是因为,一旦您消除了“注释”问题,您可能不需要正则表达式的所有功能来完成其余的搜索。

关于c# - 正则表达式忽略模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15141492/

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