Inhalt der Zelle NICHT als RegExp interpretieren

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: Inhalt der Zelle NICHT als RegExp interpretieren

Re: Inhalt der Zelle NICHT als RegExp interpretieren

von AlexS77 » Mi, 22.04.2009 09:22

Moin!
Stephan hat geschrieben:Ob das, in Abwägung aller Umstände, für DEine Zwecke besser ist weiß ich aber nicht.
Keine Ahnung ob's besser ist - auf jeden Fall finde ich Deine Hilfe sehr gut, denn jetzt habe ich auch mal gesehen, wie man so eine Funktion einbinden würde. :)

Alleine schon dafür bin ich dankbar *G*

Alexander

PS: Sanne, Dir bin ich aber natürlich auch für Deinen WECHSELN() Hinweis dankbar, nicht falsch verstehen :)

Re: Inhalt der Zelle NICHT als RegExp interpretieren

von AlexS77 » Mi, 22.04.2009 09:20

Sanne hat geschrieben:Was mir grad einfällt:
ich glaube, die Einstellung "regex in Formeln zulassen" wird pro Dokument gespeichert. Probiers doch mal aus, vielleicht brauchst Du das ganze Theater dann gar nicht.
mfG
Okay, danke, guter Hinweis - NUR: Ich brauche in dieser Datei in manchen Tabellen auch RE's.

Mich wundert halt ein wenig, das es da keine einfache Möglichkeit gibt, einen Text zu escapen; wundert mich besonders deshalb, da "RE in Formeln ermöglichen" ja per Default aktiviert ist.

Seltsam.

Tja :)

Danke nochmal,
Alexander

Re: Inhalt der Zelle NICHT als RegExp interpretieren

von Stephan » Di, 21.04.2009 23:24

Okay, an WECHSELN() hatte ich nicht gedacht. Sieht auch IMO überhässlich aus ist "etwas" umständlich - aber wenn's tutet *g* Um alle RE Sonderzeichen zu "wechseln", müsste man also machen:

[...]
Du könntest das auch in eine benutzerdefinierte Funktion packen, z.B.:

Code: Alles auswählen

Function XRE(x)
ofunction = CreateUnoService("com.sun.star.sheet.FunctionAccess")
alle = Array("\",")","(","+",".","[","]","?","*","^","$","{","}")
Dim Argumente(2) As Variant

For i = 0 To UBOUND(alle())
	Argumente(0) = x
	Argumente(1) = alle(i)
	Argumente(2) = "\" & alle(i)
	
	x = ofunction.CallFunction("SUBSTITUTE",Argumente())
Next i

XRE = x

End Function
und in der Tabelle dann diese benutzen, z.B.:

=SVERWEIS(XRE(A9);A1:A5;1;FALSCH())


Ob das, in Abwägung aller Umstände, für DEine Zwecke besser ist weiß ich aber nicht.



Gruß
Stephan
Dateianhänge
benutzerdefinierte_Funktion.ods
(10.74 KiB) 35-mal heruntergeladen

Re: Inhalt der Zelle NICHT als RegExp interpretieren

von AlexS77 » Di, 21.04.2009 20:10

Sanne hat geschrieben:Du hast es eigentlich schon selbst aufgeschrieben:
=SVERWEIS(WECHSELN(A9;"+";"\+");A1:A5;1;0)

Wenn Du noch mehr solche Zeichen hast, musst Du verschachteln:
=SVERWEIS(WECHSELN(WECHSELN(WECHSELN(A9;")";"\)");"(";"\(");"+";"\+");A1:A5;1;0)

mfG
Danke.

Okay, an WECHSELN() hatte ich nicht gedacht. Sieht auch IMO überhässlich aus ist "etwas" umständlich - aber wenn's tutet *g* Um alle RE Sonderzeichen zu "wechseln", müsste man also machen:

Code: Alles auswählen

=WECHSELN(WECHSELN(WECHSELN(WECHSELN(WECHSELN(WECHSELN(WECHSELN(WECHSELN(WECHSELN(WECHSELN(WECHSELN(WECHSELN(WECHSELN(A9;"\";"\\");")";"\)");"(";"\(");"+";"\+");".";"\.");"[";"\[");"]";"\]");"?";"\?");"*";"\*");"^";"\^");"$";"\$");"{";"\{");"}";"\}")
Oder kann man da vlt. auch REs bei WECHSELN() verwenden? Bei perl/sed/... würde ich machen:

Code: Alles auswählen

boeser_text="Ein Test + Text mit (2*1)^8 US $, soll das sein? In C:\Windows ist [W95] & Vista. {Note1}"
echo "$boeser_text" | perl -p -e 's,[.^\$*+?&{}()\[\]\\],\\$&,g'
# bzw.
echo "$boeser_text" | perl -p -e 's,([.^\$*+?&{}()\[\]\\]),\\$1,g'
# → Ein Test \+ Text mit \(2\*1\)\^8 US \$, soll das sein\? In C:\\Windows ist \[W95\] \& Vista\. \{Note1\}
Danke,
Alexander

Inhalt der Zelle NICHT als RegExp interpretieren

von AlexS77 » Di, 21.04.2009 16:07

Hallo.

Für bestimmte Formeln/Tabellen meiner OOo Calc 3.0.1 Datei brauche ich's, das ich „Regular Expressions“ (Reg Exp, „reguläre Ausdrück“) verwenden kann. Aber, für manch andere Formeln nicht.

Ich habe in einer Tabelle folgenden Inhalt:

MB BMW E85 7 896 023_E04.pdf
Angebot Lehre 363.pdf
Angebot Lehre 532+363.pdf
Angebot 490 Cimform neu.pdf
070904 X250 Delivery Term Spec HLC088 EPDM 35Kg PAPE Film front carpet.pdf

Weiter stehe in A9 "Angebot Lehre 532+363.pdf". Und zu guter letzt habe ich diese Formel:

Code: Alles auswählen

=SVERWEIS(A9;A1:A5;1;FALSCH())
Aktiviere ich nun die unterstützung von Regular Expressions, so bekomme ich ein #NV "an den Kopf geknallt" :( Grund: Das "+" wird als RE Zeichen interpretiert und somit gibt's in der Tat keinen Treffer. Escape ich allerdings das + (setze also A9 = "Angebot Lehre 532\+363.pdf"), so klappt's. Dito, wenn ich REs deaktiviere.

Die angehängte Tabelle soll das Problem zeigen.
Problem wegen Reg Exp in SVERWEIS.ods
Verwende Formel =SVERWEIS(A9;A1:A5;1;FALSCH()) und A9 wird als RegExp ausgewertet... :(
(9.2 KiB) 32-mal heruntergeladen
Ich möchte aber RE Support nicht ausschalten.

Kann ich Calc irgendwie dazu bringen, das JETZT in DIESER Formel an DIESER Stelle der Zellinhalt "wörtlich" zu nehmen sei? Gibt's also z.B. irgendwie eine Funktion oder so, die den Inhalt "escaped"? Quasi:

Code: Alles auswählen

=SVERWEIS(ESCAPE(A9);A1:A5;1;FALSCH())
Vielen Dank,
Alexander

Nach oben