regex – 从正则表达式中提取静态字符串
我正在尝试有效地提取静态字符串(必须匹配给定正则表达式匹配的字符串).我已经能够在最简单的情况下完成它,但我正在尝试发现一个更强大的解决方案.
鉴于如下所示的正则表达式 "fox jump(ed|ing|s)" 会给我们的 "fox,jumped,jumping,jumps" 另一个例子是 "fox jump(ed|ing|s)?" 哪会给我们 "fox,jump" 因为可选的运算符 我现在的算法过于简单了.它将从正则表达式的末尾开始并删除组或单个字符,然后是这些运算符“*?”以及“爆炸”分组OR运算符“(|)”.这种方法效果很好,但没有考虑正则表达式的完整语法.您可以将其视为正则表达式的最小集生成过程(正则表达式可以“生成/必须匹配”的最小字符串集). 为什么?
请参阅库
Xeger,它给出了一个正则表达式,它将为您提供匹配的所有可能的字符串.
您似乎只想保留这些字符串的公共前缀(您说要忽略可选运算符的部分),但如果您这样做,您可能会捕获具有该公共前缀但没有您想要的结尾的蜇(例如“在你的例子中“跳跃”.如果这不是问题,那么只需找到Xeger给出的最短字符串,假设可选运算符仅出现在正则表达式的末尾. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |