W komórce A1 arkusza programu Excel mam następującą zawartość w komórce:
select a.id, b.type, c.name
from blah a,
blah2 b,
blah3 c
where a.id = b.key
and b.key = c.id
;
Każdy z poniższych wyników jest pożądany:
select 1 from
blah a,
blah2 b,
blah3 c
where a.id = b.key
and b.key = c.id
;
LUB
select 1
from blah a,
blah2 b,
blah3 c
where a.id = b.key
and b.key = c.id
;
Mam ten kod VBA
Dim objRegExp As New RegExp
objRegExp.Pattern = "select .+ from"
objRegExp.Global = True
objRegExp.MultiLine = True
regexpReplace =objRegExp.Replace(Trim(Worksheets("new").Range("A1").Value),"select 1 from")
MsgBox regexpReplace
Ale okno komunikatu wyświetla dokładny tekst z komórki A1 (tzn. Bez wymiany). Czy ktoś wie, dlaczego tak się dzieje? Nie będę w stanie zastąpić wielu linii.
Wiem, że mój kod wyrażenia regularnego jest w porządku, ponieważ próbowałem zmienić komórkę A1 na niższą (i to zrobiło to poprawnie):
select a.id, b.type, c.name from
blah a,
blah2 b,
blah3 c
where a.id = b.key
and b.key = c.id
;
źródło
select[\s\S]+from
.Istnieją dwa problemy:
objRegExp.Pattern = "select\s.+\sfrom"
(\s
aby dopasować białe znaki, w tym nowe linie)"select 1" & vbNewLine & "from"
aby wstawić nowy wiersz w żądanym miejscuźródło