RegEx - Klein- und Großschreibung spielt keine Rolle
Hallo zusammen,
ich brauche für ein kl. Projekt einen Regular Expression. Der Ausdruck soll prüfen, ob ein bestimmes Wort in einer Zeile vorkommt. Dabei soll die Position des Wortes in dieser Zeile, Groß- & Kleinschreibung dieses Wortes keine Rolle spielen.
Beispielzeile:
Nun ist aber das Wort Strohhut verboten - egal wie geschrieben:
Ich bring's einfach nicht auf die Reihe. 
Gruss,
Dani
ich brauche für ein kl. Projekt einen Regular Expression. Der Ausdruck soll prüfen, ob ein bestimmes Wort in einer Zeile vorkommt. Dabei soll die Position des Wortes in dieser Zeile, Groß- & Kleinschreibung dieses Wortes keine Rolle spielen.
Beispielzeile:
Das ist dein Strohhut
Strohhut
strohhut
sTROhhut
....
Gruss,
Dani
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 92931
Url: https://administrator.de/forum/regex-klein-und-grossschreibung-spielt-keine-rolle-92931.html
Ausgedruckt am: 21.04.2025 um 08:04 Uhr
25 Kommentare
Neuester Kommentar

find /i oder findstr /i benutzen. /i ignoriert die Groß-/Kleinschrift.
Wenn du das in einer Programmiersprache verwendest, vorher den String zur Prüfung umwandeln mit AnsiUppercase() oder AnsiLowercase(), ganz nach Vorliebe.
Wenn du das in einer Programmiersprache verwendest, vorher den String zur Prüfung umwandeln mit AnsiUppercase() oder AnsiLowercase(), ganz nach Vorliebe.
Hallo Dani!
Welchen Vorteil siehst Du bei Deiner Schreibweise? Da Du beliebige Zeichen vor und nach dem Suchbegriff zulässt ergibt sich daraus keine Einschränkung, und falls der Suchbegriff auf zwei (oder mehr) Zeilen verteilt wäre, sollte er durch das enthaltene Zeilenendezeichen (egal, ob Chr(10) oder Chr(13) oder beides) ohnehin nicht gefunden werden.
Wenn Du andererseits erreichen wolltest, dass der Suchbegriff nur als einzelnes Wort gefunden wird, müsstest Du ihn mit "\b" eingrenzen.
Grüße
bastla
[Edit] Wenn allerdings das Ziel ist, die gesamte Zeile als Ergebnis zu erhalten, dann sehe ich den Sinn in Deiner Version inzwischen auch.
[/Edit]
Welchen Vorteil siehst Du bei Deiner Schreibweise? Da Du beliebige Zeichen vor und nach dem Suchbegriff zulässt ergibt sich daraus keine Einschränkung, und falls der Suchbegriff auf zwei (oder mehr) Zeilen verteilt wäre, sollte er durch das enthaltene Zeilenendezeichen (egal, ob Chr(10) oder Chr(13) oder beides) ohnehin nicht gefunden werden.
Wenn Du andererseits erreichen wolltest, dass der Suchbegriff nur als einzelnes Wort gefunden wird, müsstest Du ihn mit "\b" eingrenzen.
Grüße
bastla
[Edit] Wenn allerdings das Ziel ist, die gesamte Zeile als Ergebnis zu erhalten, dann sehe ich den Sinn in Deiner Version inzwischen auch.
Hallo Dani!
Wie das Leben so spielt - grade hatte ich mir gedacht, vor dem Abendessen könnte ich doch vielleicht noch ein kleines Script ...
Wenn Du mit
in der Konsole startest, wird hoffentlich etwas Vernünftiges, Kopierfähiges herauskommen ...
Mahlzeit
bastla
[Edit] Kleine Anpassung: Wenn es keine Groß-/Kleinschreibung gibt (Ziffern, etc) genügt auch die Angabe des Zeichens selbst. [/Edit]
Wie das Leben so spielt - grade hatte ich mir gedacht, vor dem Abendessen könnte ich doch vielleicht noch ein kleines Script ...
If WScript.Arguments.Count > 0 Then
Wort = WScript.Arguments(0)
Else
WScript.Echo "Bitte mit Suchwort als Parameter aufrufen!"
WScript.Quit
End If
Wort = UCase(Wort)
Pattern = ""
For i = 1 To Len(Wort)
CharU = Mid(Wort, i, 1)
If CharU >= "A" And CharU <= "Z" Or CharU = "Ä" Or CharU = "Ö" Or CharU = "Ü" Then
Pattern = Pattern & "[" & CharU & LCase(CharU) & "]"
Else
Pattern = Pattern & CharU
End If
Next
WScript.Echo Pattern
cscript "Scriptname.vbs" "strohhut"
Mahlzeit
bastla
[Edit] Kleine Anpassung: Wenn es keine Groß-/Kleinschreibung gibt (Ziffern, etc) genügt auch die Angabe des Zeichens selbst. [/Edit]
Hallo Dani!
Ich würde aber trotzdem zu meiner angepassten Version raten - ist etwas "schöner" ...
Grüße
bastla
Wenn man das noch anders lösen kann, lass ich mich gerne belehren.
Wenn's denn nicht die Konsole sein darf (dort könnte man/frau noch den Aufruf der "clip.exe" - zB von einem Server 2003 "geborgt" - dranhängen), passt die Lösung so - der Weg aus einem (mit WScript gestarteten) VBScript in die Zwischenablage ist etwas holprig.Ich würde aber trotzdem zu meiner angepassten Version raten - ist etwas "schöner" ...
Grüße
bastla
Nein Dani,
<OT>
...und nein, reinhören bringt auch keine neuen Erkenntnisse.
Geht mich ja nichts an, aber willst Du vor so schwierigen Sachen nicht erstmal 'ne Runde ausschlafen?
</OT>
SCNR
Biber
<OT>
ok, die clip.exe habe ich, wie wo was muss ich jetzt wo einbauen.
Hör die Anwendung heute 1. Mal.
es ist kein Musikclip, den Du da heruntergeladen hast...Hör die Anwendung heute 1. Mal.
...und nein, reinhören bringt auch keine neuen Erkenntnisse.
Geht mich ja nichts an, aber willst Du vor so schwierigen Sachen nicht erstmal 'ne Runde ausschlafen?
</OT>
SCNR
Biber
Hallo Dani!
Nimm diese Script-Version (dann hast Du alle Möglichkeiten) und die obige Batchzeile:
Grüße
bastla
Nimm diese Script-Version (dann hast Du alle Möglichkeiten) und die obige Batchzeile:
If WScript.Arguments.Count > 0 Then
Wort = WScript.Arguments(0)
Else
Wort = InputBox("Bitte Wort eingeben:", "Abfrage")
If Wort = "" Then WScript.Quit
End If
Wort = UCase(Wort)
Pattern = ""
For i = 1 To Len(Wort)
CharU = Mid(Wort, i, 1)
If CharU >= "A" And CharU <= "Z" Or CharU = "Ä" Or CharU = "Ö" Or CharU = "Ü" Then
Pattern = Pattern & "[" & CharU & LCase(CharU) & "]"
Else
Pattern = Pattern & CharU
End If
Next
WScript.Echo Pattern
bastla
Hallo Dani!
Wenn ich das richtig interpretiere, muss der Username am Ende eines "Wortes" stehen ...
In diesem Fall wäre noch ein "\b" (Stichwort: "Wortgrenze") an den Suchstring anzuhängen - zB in der letzten Script-Zeile durch
Um auch das Zeichen davor einzuschränken, zB
Die eckigen Klammern um "@" sind eigentlich unnötig, außer, es sollen noch andere Zeichen unmittelbar vor dem Suchbegriff akzeptiert werden ...
Grüße
bastla
Wenn ich das richtig interpretiere, muss der Username am Ende eines "Wortes" stehen ...
In diesem Fall wäre noch ein "\b" (Stichwort: "Wortgrenze") an den Suchstring anzuhängen - zB in der letzten Script-Zeile durch
WScript.Echo Pattern & "\b"
WScript.Echo "(\b|[@])" & Pattern & "\b"
Grüße
bastla