Контекст:Как сжато регулярное выражение соответствует любой части уникальной строки?
Скажем, у меня есть набор строк, которые все различны, хотя они могут разделить исходные последовательности, т.е. apple, banana, bpple, canana, applf
.
Как лучше всего использовать регулярное выражение для строки, которая может содержать любое начальное подмножество одного из этих строк? Например, apple
и banana
явно совпадают. Так будет banan
, ba
, bp
и c
. b
и appl
были бы неоднозначными (и поэтому не должны совпадать).
Использование генерируемых классов символов в динамически созданных регулярных выражениях (медленных и уродливых), я могу создать для этого механизм соответствия. Однако сложно сказать, что, когда я пытаюсь, я в конечном итоге выполняю большую часть логики соответствия в Python/pick-your-language и reitchx. Есть ли какой-то краткий способ сделать эту работу регулярными выражениями?
Простейший способ сделать это может заключаться в том, чтобы разбить каждую возможную строку (apple, banana
и т. Д.) В список и сопоставляться с каждым из них последовательно, но любопытство и упрямство заставляют меня задаться вопросом, нет ли какого-либо способа сделать это только с регулярным выражением/в основном.
TL; DR:
Есть ли способ, с помощью регулярных выражений, чтобы соответствовать: тогда и только тогда, когда строка поставляется является уникальный и левой начиная подстрока только один из заданный набор строк?
Любое решение регулярных выражений будет динамически построено; возможно, вы могли бы показать код, который у вас есть. – MikeM