regEx ersetzen nicht das entfernen von Leerzeichen als erwartet
Hier ist das typische Zeichenfolge, mit der ich arbeite:
· Identify & document site-related constraints and assumptions.
Ich würde gerne Peeling, die Zeichenfolge, um loszuwerden, alles, was vor "Identifizieren"...
Schrieb ich eine Funktion, um die Zeichenfolge in Anspruch nehmen und schrubben Sie, hier ist es:
Function dataScrub(dataIn As String)
Dim dataIn_orig As String
dataIn_orig = dataIn
'BEGIN : create and set regular expression
Dim regEx
Set regEx = CreateObject("vbscript.regexp")
With regEx
.IgnoreCase = True
.MultiLine = False
.Pattern = "^[\s]*[·]+[\s]*"
.Global = True
End With
dataScrub = regEx.Replace(dataIn_orig, "")
End Function
Für einen unbekannten Grund, den zu ersetzen, ist das ersetzen der · (nicht ein Zeitraum, der mehr einer Kugel), aber nicht immer loszuwerden der Räume, die darauf Folgen, also mein Ergebnis ist:
Identify & document site-related constraints and assumptions.
Wenn ich Teste meine regEx mit einem online-tester (http://www.regular-expressions.info/javascriptexample.html), es funktioniert wie vorgesehen.
Was mache ich falsch?
Ich glaube nicht, dass das Problem mit der regex, aber mit der Formatierung des Textes. Ich bin spielen mit etwas, um zu sehen, ob ich bekommen kann es arbeiten. Ich bemerkte dies, weil die excel trim-Funktion wird nicht entfernen Sie die Leerzeichen vor dem text nach dem regex ausführen
InformationsquelleAutor Seth | 2009-12-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
[\s]
entspricht entweder einer\
oder eines
. Versuchen Sie es mit einfach nur alt\s
ohne die eckigen Klammern.Gut, da das immer noch nicht funktioniert, die letzten
\s*
vielleicht ungeliebte match anstelle gierig ein. Sie sollten in der Lage sein, um das zu beheben, indem ein\b
am Ende Ihren Ausdruck.\b
zeigt eine Wort-Grenze (entweder vor oder nach einem Wort). Versuchen Sie diese:hinzufügen der \b hat nicht funktioniert entweder. der Hinweis aber, es hat funktioniert (mein Erster Versuch) in regular-expressions.info/javascriptexample.html, aber interessanterweise funktionierte nicht in rubular.com (wobei meine erste Tat), nicht wie einer, der wirklich entscheidend ist, aber 🙂
Sind Sie sicher, dass die Räume werden ergänzt durch die
\s
? Der Raum in Wirklichkeit nicht eine typische Registerkarte oder ein Leerzeichen. Es könnte ein paar schicke Formatierung statt, die in einem regulären Ausdruck nicht entsprechen. Ich würde raten, kopieren Sie das Feld aus Excel und in einen text-editor, speichern Sie es, dann prüft das Ergebnis in einem hex-editor, um zu sehen, welche Figur(en) verursacht tatsächlich, dass der Leerraum nach dem Punkt.tolle Idee... ich Tat was Sie vorgeschlagen, hier ist die hex-breakdown: B7 = die Kugel A0 = white space ( x7) 20 = Leerzeichen direkt vor dem Wort "Identifizieren" Zeit für mich zu suchen, wie integrieren Sie hex-Werte in Excel-VB-regEx ' s (wenn es möglich ist)
FTW!!! tut regEx ' s mit HEX war ziemlich einfach, nach einer schnellen google-Suche. Welbox, ich danke Ihnen sehr für Ihre Zeit, mir zu helfen!
InformationsquelleAutor Welbog
Sieht aus wie die Antwort wurde akzeptiert schon, aber mit dieser code-Zeile in Ihrer Funktion kümmern Sie Problem als gut.
InformationsquelleAutor Irwin M. Fletcher