Regex - suche Inhalt der mit & anfängt und mit # endet

max40

Lt. Junior Grade
Registriert
Nov. 2010
Beiträge
256
moin.
vielleicht kann mir da einer schnell helfen :-)

Habe immer eine Zeile Text und suche den Bereich der mit & anfängt und mit # aufhört, dazwischen dürfen max 10 Zeichen sein, darf aber keine Leerzeichen enthalten.

&...# kann mehrmals in einer Zeile vorkommen.

Beispiel:
Heute haben wir den &DATE# und es ist &TIME# Uhr

Dazu brauch ich den Regex.

Danke + Gruß
Max
Ergänzung ()

wäre das richtig?
\&[a-z,A-Z]{1,10}\#

oder habe ich was nicht bedacht?

Denke ä,ö,ü lasse ich weg.
 
Zuletzt bearbeitet:
Code:
/&(\S{1,10})#/g

  • & und # muss man normalerweise nicht maskieren (es sei denn, du verwendest eine sehr interessante implementierung; aber bei perl & php definitiv nicht)
  • \S sucht nach allen non-whitespaces, es werden also Leerzeichen (und Tab Stops) nicht berücksichtigt
  • die Klammern () sorgen dafür, dass & und # nicht mit zu dem Suchergebnis gezählt werden
  • g (nach dem /) sorgt dafür, dass die Anweisung nicht nur einmal, sondern wiederholt angewendet wird (bei Perl), in PHP wäre es ein anderer Befehl:
    Code:
    preg_match_all('/&(\S{1,10})#/',$string,$matches);
 
Zuletzt bearbeitet:
Danke rumbalotte.
Benötige es in Java.
"&(\\S{1,10})#" funktioniert noch besser.
 
Schau aber bitte nochmal nach (wenn du es nicht schon weißt) ob das in Java standardmäßig greedy oder nicht ausgewertet wird. Falls es greedy ist, kann es dir unter Umständen passieren, dass du bei &DATE#&TIME# nicht DATE und TIME als Match sondern DATE#&TIME bekommst. Möglicherweise kommt sowas in deinen Strings eh nicht vor, doch ich wollte sicherheitshalber mal drauf hinweisen.
 

Ähnliche Themen

Antworten
21
Aufrufe
2.369
Zurück
Oben