Eine hinterhältige gotcha ist , dass .*sie nicht new-line - Zeichen (entsprechen '\n'). Weitere Informationen zu diesem Thema finden Sie in dieser Frage .
Captain Man
32
Sie können diesen regulären Ausdruck (ein beliebiges Leerzeichen oder ein beliebiges Nicht-Leerzeichen) so oft wie möglich bis einschließlich 0 verwenden.
[\s\S]*
Dieser Ausdruck entspricht so wenig wie möglich, aber so vielen wie für den Rest des Ausdrucks erforderlich.
[\s\S]*?
Zum Beispiel in dieser Regex [\s\S]*?Bpaßt auf aBin aBaaaaB. Aber in dieser Regex [\s\S]*Bpaßt auf aBaaaaBin aBaaaaB.
Ich würde verwenden .*. .Entspricht einem beliebigen Zeichen und *bedeutet 0 oder mehr Vorkommen. Möglicherweise benötigen Sie einen DOTALL-Schalter zur Regex, um neue Zeilen mit zu erfassen ..
.*
sie nicht new-line - Zeichen (entsprechen'\n'
). Weitere Informationen zu diesem Thema finden Sie in dieser Frage .Sie können diesen regulären Ausdruck (ein beliebiges Leerzeichen oder ein beliebiges Nicht-Leerzeichen) so oft wie möglich bis einschließlich 0 verwenden.
Dieser Ausdruck entspricht so wenig wie möglich, aber so vielen wie für den Rest des Ausdrucks erforderlich.
Zum Beispiel in dieser Regex
[\s\S]*?B
paßt aufaB
inaBaaaaB
. Aber in dieser Regex[\s\S]*B
paßt aufaBaaaaB
inaBaaaaB
.quelle
.
manchmal nicht\n
(Zeilenumbruch), abhängig von der mehrzeiligen Option, stimmt aber[\s\S]
mit jedem Zeichen überein.Meinst du
.
Jedes Zeichen außer Newline-Zeichen enthält im Dotall-Modus auch die Newline-Zeichen*
Beliebige Menge des vorhergehenden Ausdrucks, einschließlich 0-malquelle
Ich würde verwenden
.*
..
Entspricht einem beliebigen Zeichen und*
bedeutet 0 oder mehr Vorkommen. Möglicherweise benötigen Sie einen DOTALL-Schalter zur Regex, um neue Zeilen mit zu erfassen.
.quelle
Ja, es gibt einen, es ist das Sternchen:
*
Dies sollte in jedem Java-Regex-Tutorial oder in jeder Dokumentation behandelt werden, die Sie nachschlagen.
quelle