Regex 正则表达式算法

Regex 正则表达式算法,regex,algorithm,Regex,Algorithm,给定一个子字符串,是否有一种方法可以生成所有可能的正则表达式(限制性最大到限制性最小),这些正则表达式将与给定字符串的子字符串相匹配 例如,假设您有一个子字符串“orange”和一个字符串“apple banana orange grape”。我如何获得匹配“orange”的正则表达式列表(我知道会有很多;希望已经有一些库可以为我这样做了)。这与询问“给定一些运行时要求,是否有方法生成所有可能的程序(从最高效到最低效)答案是肯定的,有办法做到这一点,但结果的数量是无限的,仅受合理内存和语言实现约

给定一个子字符串,是否有一种方法可以生成所有可能的正则表达式(限制性最大到限制性最小),这些正则表达式将与给定字符串的子字符串相匹配


例如,假设您有一个子字符串“orange”和一个字符串“apple banana orange grape”。我如何获得匹配“orange”的正则表达式列表(我知道会有很多;希望已经有一些库可以为我这样做了)。

这与询问“给定一些运行时要求,是否有方法生成所有可能的程序(从最高效到最低效)答案是肯定的,有办法做到这一点,但结果的数量是无限的,仅受合理内存和语言实现约束的限制,因此您需要对构成有效“程序”的内容施加限制,为了把它缩减成一个有限的集合

例如,您可以将自己限制为某种特定的语法,表示所讨论的正则表达式语言的子集,并且只生成与该语法匹配的正则表达式:

Regex ::= StartAnchor? Anything? (Substring | Anything) Anything? EndAnchor? StartAnchor ::= "^" Anything ::= ".*" | "(.*)" Substring ::= "orange" | "(orange)" EndAnchor ::= "$" 正则表达式::=StartAnchor?任何东西(子字符串|任何内容)任何内容?尾锚? StartAnchor::=“^” 任何东西::=“*” | "(.*)" 子字符串::=“橙色” |“(橙色)” EndAnchor::=“$”
递归地获取此语法的所有路径(即,
|
指示的每个分支)以生成所有目标正则表达式。当然,这个答案故意没有说明这样做是否是个好主意,或者是否有必要……

除了“很多”之外,还有无限多的正则表达式,它们可以用于任何目标字符串。一个简单的例子是:“橙色”、“橙色”、“橙色”、“橙色”、“橙色”、“橙色”等等。你应该澄清你的问题,请解释你的最终目标是什么。即使是
(任何可能的正则表达式)?orange(任何可能的正则表达式)?
“这基本上和问“…”-哈?这不是一回事,也不可行。如果我误解了你,请解释你的意思。