Kann OO Reguläre Teilausdrücke ersetzen durch /$1 oder &1 ??
Ich habe aus einer pdf Tabelle die Zahlen extrahiert.
Ausgangspunkt des Problems sind die Tausenderzeichen in der pdf Tabelle.
123 456
Mit dem 00-Makro "Columns2cell" wird aber auch die Spaltentrennung nur mit einem Leerzeichen dargestellt.
Dadurch werden aus den beiden pdf Spalten
123 456|987 654|
dann auf einmal 4 Spalten
123|456|987|654|
Mit dem Windows Freeware Free PDF Text Reader werden saubere Spalten mit jeweils einem TausenderLeerzeichen, aber als Spaltentrennung ca. 10 Leerzeichen, erstellt.
Wenn ich den Text in Writer reinkopiere, dann kann ich mit
[0-9]{1,3} [0-9]{1,3}
den gewünschten Ausdruck "123 456" erkennen.
Wie kann ich die beiden Teilausdrücke dann in "Ersetzen durch" reinbekommen, so dass das unerwünschte Leerzeichen wegfällt?
Mit
&1&2
passiert zumindest das Erkennen der Teilausdrücke, aber dadurch verbleibt der String
123 456 an der gleichen Stelle, und dahinter wird 1123 4562 eingefügt.
Es entsteht:
123 4561123 4562 - also wurde eine 1 am Anfang und eine 2 ans Ende reingebaut.
Mit der Ersetzung durch &&
entsteht eine Art Verdoppelung:
123 456123 456
Also kann OO keine "backreferences" ersetzen?? Ist das so, oder gibt es undokumentierte Befehlsfolgen?
/1 oder $1 etc gehen auch nicht.
Wenn das nicht in OO geht, welches andere Programm kann das?
Reguläre Ausdrücke löschen Leerstelle des Tausenderzeichens
Moderator: Moderatoren
backreferences
Hi
derartiges habe ich auch in OOo lange probiert. Die Ersetzung der Teile des Suchausdrucks geht m.E. nicht.
Ein Editor, der reguläre Ausdrücke kann, ist jEdit (http://www.jedit.org).
Der Ausdruck wäre dann:
suche: ([0-9]{3}) ([0-9]{3})
ersetze: $1$2.
Gruß
derartiges habe ich auch in OOo lange probiert. Die Ersetzung der Teile des Suchausdrucks geht m.E. nicht.
Ein Editor, der reguläre Ausdrücke kann, ist jEdit (http://www.jedit.org).
Der Ausdruck wäre dann:
suche: ([0-9]{3}) ([0-9]{3})
ersetze: $1$2.
Gruß
Re: backreferences
Hallo rma,rma hat geschrieben:Hi
derartiges habe ich auch in OOo lange probiert. Die Ersetzung der Teile des Suchausdrucks geht m.E. nicht.
habe dieses Problem auch zur Kenntnis nehmen müssen. Ich habe in Word ein Makro verwendet, das Leerschritte durch geschützte - ersetzt. Folgende Kombinationen habe ich ua verwendet:
Suchstring: lit.[ ]@([a-zA-Z])
Ersetzstring: lit.^g\1
Suchstring: lit[ ]@([a-zA-Z])
Ersetzstring: lit^g\1
Das erste Problem dabei ist, dass zwar nach ASCII-Codes gesucht werden kann (z.B.: \x0020 für den Leerschritt), aber im Ersetzfeld ein derartiger Code gerade nicht funktioniert (bis jetzt konnte ich auch noch nicht eruieren, wie der Code für den geschützten Leerschritt Chr(160) lautet).
Das zweite Problem sind die Klammern; sie können zwar im Suchfeld verwendet werden, aber im Ersetzfeld kann darauf nicht referenziert werden.
Folgendes Script habe ich erstellt:
Code: Alles auswählen
Sub leerzeichen()
Dim suchstr As String
Dim ersetzstr As String
Dim datei As String
Dim SearchDesc As Object
Dim objDoc As Object
objDoc = ThisComponent
Replace = objDoc.createReplaceDescriptor
datei = "D:\DATEN\regex.txt"
datei = ConvertToURL(datei)
Open datei For Input As #1
Do While Not EOF(1)
Line Input #1, suchstr
If suchstr = "<ENDE>" Then GoTo Ende
Line Input #1, ersetzstr
With Replace
.SearchRegularExpression = True
.SearchAll = True
.SearchString = suchstr
.ReplaceString = ersetzstr
End With
objDoc.replaceAll(Replace)
Loop
Ende:
Close #1
End Sub
Habe ich vielleicht doch etwas übersehen; falls Ihr einen Ausweg kennt, lasst es mich bitte wissen.
Liebe Grüße aus Wien
ManfredB