|
|
|
| Как записать такое условие?
Найти максимально маленькие фрагменты между A и B.
Например, найти выделенное:
xxAxxAxxxBAxxAxxxBxxxBx
Ну, и, грубо говоря, заменить на D:
xxAxxADBAxxADBxxxBx
Вроде тоже несложно должно быть, но не получается...
Такое условие:
(?<=A)(.+?)(?=B)
оказывается слишком жадным и выхватывает более крупные фрагменты:
xxAxxAxxxBAxxAxxxBxxxBx
с таким результатом:
xxADBADBxxxBx
Вероятно, это связано с тем, что выражение парсится слева направо без предварительного анализа и без возвратов?
Как быть? | |
|
|
|
|
|
|
|
для: kvecxjo
(16.12.2005 в 14:02)
| | Отключите жадность при помощи U | |
|
|
|
|
|
|
|
для: Евгений Петров
(16.12.2005 в 16:26)
| | А Вы пробовали? Жадность уже отключена знаком "?". Я, разумеется, попробовал, ничего не изменилось.
Нужно, а думаю, написать выражение типа:
(?<=A)(что угодно но не A и не B)(?=B)
P.S. A, B и С могут быть последовательностями символов!
Даже пример ради этого заменю:
Например, найти выделенное:
xxA1xxA1xxxB1A1xxA1xxxB1xxxB1x
Ну, и, грубо говоря, заменить на D:
xxA1xxA1DB1A1xxA1DB1xxxB1x | |
|
|
|