// \*[\d\D]*?\* // // Match the character "*" literally «\*» // Match a single character present in the list below «[\d\D]*?» // Between zero and unlimited times, as few times as possible, expanding as needed (lazy) «*?» // Match a single digit 0..9 «\d» // Match a single character that is not a digit 0..9 «\D» // Match the character "*" literally «\*»
Mal ganz abgesehen davon das der Ausdruck so "schwachsinn" ähm tschuldigung, ich meine natürlich "unnötig kompliziert" ist ;) Ein einfaches "\*.*?\*" hätte es auch getan.
Ist das wirklich Schwachsinn? .* ist nicht das gleiche wie [\d\D]*? , in den meisten Regex-Dialekten beinhaltet der Punkt kein NEWLINE, mit [\d\D]*? hast du wirklich alles, bis ein Stern kommt, auch NEWLINE.
Das ist richtig, aber in den meisten Dialekten gibt es dafür die RegEx-Option "SingleLine" oder "DotMatchesNewLine" oder ähnlich. "[.\n]" oder "[.\s]" wäre noch alternativen wenn man die Option nicht anschalten kann.
Floyd, mich würde mal interessieren, woher Du die von Dir gepostete, englische Erklärung hast. Das sieht für mich so aus, als würde es da eine Webseite für geben, in der ich Reg-Ausdrücke eintragen kann und dann die Antwort so rauskommt.
Die Erzeugt das Tool RegExBuddy (http://www.regexbuddy.com/index.html). Ich finde das Tool ist wirklich Gold wert wenn man viel mit RegEx-Ausdrücken arbeitet. Es gibt auch ne Trial-Version zum ausprobieren.
Einfacher und schneller (in der Ausführung) und ein echtes Äquivalent ist \*[^*]*\*.
Der Test auf den abschließenden Stern muss nach jedem Zeichen erneut durchgeführt werden.
Zwar wird mit [\d\D] jedes Zeichen ausgewählt, aber nur so wenig wie möglich vor einem Stern. Daher kann man auch nach beliebig vielen Zeichen außer Stern suchen.. (und danach den Stern).
[.\n] funktioniert in .net und JavaScript im Übrigen nicht (bei anderen Implementierungen weiß ich es nicht). Dort gilt aber [.] == \.