Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / regexp + сложная замена / 8 сообщений из 8, страница 1 из 1
06.05.2008, 16:39
    #35297515
michael R
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
regexp + сложная замена
есть текст условный

dsfsdfsd
aaaa 222
dlfgkd;lfkg
kfdlgkgg
sdfsdfsd
aaa 222
sdfdsfsd
aaa 222

выбирается только aaa и после идёт 222

вопрос можно ли заменить выбранные тексты то есть ааа на <T A="aaa"/>
и всё остальное убрать совсем

вот так примерно

<T A="aaa"/>
<T A="aaa"/>
<T A="aaa"/>
...
Рейтинг: 0 / 0
06.05.2008, 16:49
    #35297552
dvim
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
regexp + сложная замена
Я бы не парился а сделал регэкспом 2 замены
1 - aaaa 222 - меняем на
<T A="aaaa 222"/>
2 - aaaa 222 уже меняем на aaaa

и все.
В принципе у самого в одном из модулей (правда там C# но не суть) так через пару замен формируется код.
...
Рейтинг: 0 / 0
06.05.2008, 17:03
    #35297610
michael R
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
regexp + сложная замена
нет не то
вопрос как нерелевантный код убить совсем через replace
а не выбирать в цикле
...
Рейтинг: 0 / 0
06.05.2008, 17:11
    #35297633
Chelovek Tapok
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
regexp + сложная замена
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Function Zamena(Stroka As String, ChtoMenyaem As String, NaChtoMenyaem As String)
    Dim i As Long
    i = (Len(Stroka) - Len(Replace(Stroka, ChtoMenyaem, ""))) / Len(ChtoMenyaem)
    If i >  0  Then Zamena = Replace(String(i, "a"), "a", NaChtoMenyaem) Else Zamena = ""
End Function
Sub Proba()
    MsgBox Zamena("asdfaaa 222aaa 222", "aaa 222", "123")
End Sub
Может так подойдет?
...
Рейтинг: 0 / 0
06.05.2008, 17:15
    #35297648
michael R
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
regexp + сложная замена
нет
несколько сотен тысяч строк
а ааа это условно
сами значения разные условие выбора одно
поэтому regexp
...
Рейтинг: 0 / 0
06.05.2008, 17:17
    #35297659
Chelovek Tapok
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
regexp + сложная замена
Маленькая поправка...

Код: plaintext
1.
2.
3.
4.
5.
Function Zamena(Stroka As String, ChtoMenyaem As String, NaChtoMenyaem As String)
    Dim i As Long
    i = (Len(Stroka) - Len(Replace(Stroka, ChtoMenyaem, ""))) / Len(ChtoMenyaem)
    Zamena = Replace(String(i, "a"), "a", NaChtoMenyaem)
End Function
...
Рейтинг: 0 / 0
06.05.2008, 18:45
    #35297907
michael R
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
regexp + сложная замена
а как можно произвести такую замену

text
Код: plaintext
fdsf <A X="sss" /> g <A X="ssqs" /><A X="ssw" /><A X="s" /> rrr <A X="qqq" /> ytrytr

заменить на пусто одной\двумя заменой всё что находится между
без > .*?<
или >(.*?)<
или >.*? до <

сами знаки < > не менять


нужен вот такой результат
Код: plaintext
1.
<A X="sss" /><A X="ssqs" /><A X="ssw" /><A X="s" /><A X="qqq" />
...
Рейтинг: 0 / 0
06.05.2008, 19:31
    #35298004
michael R
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
regexp + сложная замена
примерно вот так сделал

Dim reg As New RegExp

reg.Global = True
reg.IgnoreCase = True
reg.MultiLine = True
reg.Pattern = "(a[0-9])"
txt = " ss ss a1 bb b a2 d a3 ff"

txt = reg.Replace(txt, "<X A=" & Chr(34) & "$1" & Chr(34) & " />")
reg.Pattern = ">.*?<"
txt = reg.Replace(txt, "><")
reg.Pattern = "[^>]+<"
txt = reg.Replace(txt, "<")
i = InStrRev(txt, ">")
txt = Mid(txt, 1, i)

вытаскивается только а+цифра и заменяется
все остального нету
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / regexp + сложная замена / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]