Now you have two problems.
Вам нужно много думать о том, что такое набор возможных строк, и каково правильное регулярное выражение для каждой пары входных данных. Я знаю, что это кажется вам очевидным прямо сейчас, но убедить ваш алгоритм делать то, что вы ожидаете, может быть сложнее, чем вы думаете. Маленькая TDD всегда хорошая идея: попробуйте подумать о некоторых патологических случаях.
В вашем примере, почему она не должна генерировать что-то вроде одного из них, а не ваше предложение (см @ ответ M42 для первого) ?:
111(...)222
111(...*)222
111(...+)222
111(..*)222
111(...?)222
(.*)111(.*)222(.*)
etc.
Что бы вы хотели, если третья строка является одной из них? Или второй?
1111zzz222
111zzz2222
0111zzz222
111zzz2223
111zzzz222
111zz222
11zzz222
111zzz22
111zzz
zzz222
111xyz222
1z1z1z222
111222
1111222
1112222
etc.
Если (как я подозреваю), вы уже знаете, что некоторые из этих случаев будет невозможно, то вы уже знаете больше о возможной структуре строк, чем вы выпускающих на. И если это так, вы должны просто разобрать строки и сделать.
Если вы действительно действительно хотите попробовать это в любом случае, то первое, что вам нужно выяснить, - это вы хотите совместить «longest common subsequence» или какой-либо вариант «longest common substring».
Если вы действительно являются работает это против произвольных строк, то, как только вы думаете, у вас есть хороший алгоритм, убедитесь, чтобы проверить его против много выборочных данных (которые должны быть довольно легко создавать ...)
Давайте посмотрим, если я понимаю это. Вы хотите сохранить «статическую» часть строки, что-то равное в предыдущих строках, использовать это, чтобы найти то, что отличается через регулярное выражение? – Anders
да, это правильно. Я хотел бы сгенерировать шаблон из 2 входных строк и использовать его для извлечения (или нахождения) различий в третьей строке – defoo
111 (. *) 222, вероятно, должен быть 111 (. *?) 222. Это помогло бы, если бы вы могли привести несколько примеров, которые немного более реальны, чем те, и объяснить, каков контекст вашего запроса. Что ты пытаешься сделать? – Sylverdrag