Замена текста с помощью регулярных выражений

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
@Wiktor
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 28.12.2005 (Ср) 9:32

Замена текста с помощью регулярных выражений

Сообщение @Wiktor » 13.01.2006 (Пт) 16:31

Подскажите, необходимо в документе с помощью регулярных выражений найти и соединить разорванные абзацы. Т.е если абзац заканчивается на точку а следующий с большой буквы то такой не трогать.

Private Sub Obrb()
Dim myReg As RegExp
Set myReg = New RegExp
myReg.Global = True
myReg.Pattern = "[а-я-]\r\n[а-я]" 'ищем абзац, заканчивающийся на малую русскую или "-" и следующий абзац должен начинаться на малую русскю
RichTextBox1.Text = myReg.Replace(RichTextBox1.Text, " ") 'соединяем, но теряются крайние буквы
End Sub

Каким образом можно провести замену оставив последнюю букву абзаца и первую следующего?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 13.01.2006 (Пт) 17:06

"(?<=[а-я-])\r\n(?=[а-я])"
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

@Wiktor
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 28.12.2005 (Ср) 9:32

Сообщение @Wiktor » 13.01.2006 (Пт) 21:58

Почему то не работает, причем не работает первая часть. То есть

"[а-я-]\r\n(?=[а-я])" 'действует, съедая последнюю букву абзаца.

Может первую часть можно как-то по другому написать? Я пробовал разобраться сам, но те справочники по рег. выр., которые у меня есть либо заумные, либо упрощенные. Помогите - надо очень!!

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 14.01.2006 (Сб) 0:15

"(?<=[а-я])\r\n(?=[а-я])"

@Wiktor
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 28.12.2005 (Ср) 9:32

Сообщение @Wiktor » 20.01.2006 (Пт) 20:29

КРИК ДУШИ – ну не находит вообще ничего первая часть шаблона (?<=[а-я-])!!! Если убрать <, то все малые русские находятся и вставка происходит перед ними. А как произвести вставку после? Конкретно в моей ситуации с VB 6 и VBScript Regular Expressions 5.5. Может этот номер в NET проходит, или VBScript 5.6 нужен? После того как дважды мне показали этот шаблон я все (ну все что знаю) перепробовал – не получается. Проявите терпение на мое непонимание, ведь форум для начинающих.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 21.01.2006 (Сб) 5:48

Да, я говорил исходя из .net.
Судя по этому, скрипт не поддерживает поиск назад.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

@Wiktor
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 28.12.2005 (Ср) 9:32

Сообщение @Wiktor » 21.01.2006 (Сб) 9:22

Спасибо. Буду искать другие варианты.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, Google-бот, SemrushBot и гости: 82

    TopList