跟进我之前的问题 Hundreds of RegEx on one string 我最终得到了一个正如
这样的正则表达式(section1:|section2:|section3:|section[s]?4:|(special section:|it has:|synonyms:)).*?(?=section1:|section2:|section3:|section[s]?4:|(special section:|it has:|synonyms:)|$)
section section in regex search
我的prod系统中的正则表达式有超过1000个字符,并且多行多行。它所做的只是从大块文本中分割出部分,然后再对这些部分进行单独处理以提取信息。此外,我希望这些部分标题是自然语言容忍的,这就是为什么某些部分可以以多种方式键入,导致正则表达式的大小增加。在性能和可管理性方面有更好的方法吗?
答案 0 :(得分:4)
使用词法分析器代替正则表达式。
答案 1 :(得分:1)
也许尝试像What's better, ANTLR or JavaCC?中讨论过的那样的解析器生成器?
如果您有自然语言语法,那么您通常会重复使用子语法以允许重新排序。正确的语法比正则表达式更容易维护。
答案 2 :(得分:1)
要处理此类正则表达式中的效果,您可以使用前缀优化https://code.google.com/p/graph-expression/wiki/RegexpOptimization
此框架允许您使用Java DSL编写带有样式的regexp。因此它变得可重构和可维护。 https://code.google.com/p/graph-expression/