语境:
假设我有一组完全不同的字符串,尽管它们可能共享起始序列,即apple, banana, bpple, canana, applf
.
我将如何最好地使用正则表达式来匹配可以包含其中一个字符串的任何左开始子集的字符串?例如apple
,banana
显然会匹配。banan
,ba
和bp
也是如此c
。b
并且appl
会模棱两可(因此不应该匹配)。
在动态构建的正则表达式(缓慢而丑陋)中使用生成的字符类,我可以为此制作一个匹配引擎。然而,这很复杂,当我尝试时,我最终会在 Python/pick-your-language 中完成大部分匹配逻辑并完全放弃正则表达式。是否有一些简洁的方法可以使用正则表达式进行这项工作?
最简单的方法可能是将每个可能的字符串(apple, banana
等)分解成一个列表并按顺序匹配每个字符串,但是好奇心和固执让我想知道是否没有办法单独/主要使用正则表达式.
TL;博士:
有没有一种方法,使用正则表达式来匹配:当且仅当提供的字符串是给定字符串集中的一个唯一且左开始的子字符串?