Reguläre Ausdrücke löschen Leerstelle des Tausenderzeichens

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Reguläre Ausdrücke löschen Leerstelle des Tausenderzeichens

Re: backreferences

von ManfredB » Di, 26.09.2006 10:18

rma hat geschrieben:Hi
derartiges habe ich auch in OOo lange probiert. Die Ersetzung der Teile des Suchausdrucks geht m.E. nicht.
Hallo rma,
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
In der regex-Datei stehen die Such-Ersetz-Kombinationen.

Habe ich vielleicht doch etwas übersehen; falls Ihr einen Ausweg kennt, lasst es mich bitte wissen.
Liebe Grüße aus Wien
ManfredB

backreferences

von rma » Fr, 15.09.2006 09:58

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ß

Reguläre Ausdrücke löschen Leerstelle des Tausenderzeichens

von open1948 » Mi, 13.09.2006 17:50

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?

Nach oben