Jakiego wariantu regex używa to narzędzie?+−
Wbudowanego silnika wyrażeń regularnych JavaScript (tego stojącego za RegExp i String.prototype.match/replace), ponieważ wszystko tutaj działa po stronie klienta w Twojej przeglądarce, a nie na serwerze. Jest bardzo zbliżony do PCRE, ale ma kilka różnic - na przykład wsparcie dla lookbehind zależy od wersji silnika, a grupy nazwane używają składni (?<nazwa>...).
Dlaczego mój wzorzec dopasowuje się tylko raz?+−
Domyślnie, bez flagi g (globalna), wyrażenie regularne zatrzymuje się po pierwszym dopasowaniu - odzwierciedla to rzeczywiste zachowanie RegExp.exec() i String.match() w JavaScript. Włącz flagę g powyżej, aby znaleźć każde dopasowanie w tekście testowym, a nie tylko pierwsze.
Jaka jest różnica między (...) a (?:...)?+−
Oba grupują części wzorca, ale tylko (...) - grupa przechwytująca - zapisuje to, co dopasowała, dzięki czemu możesz się do niej odwołać później (jako $1, $2, ... w zastąpieniu lub na liście grup dopasowania). (?:...) to grupa nieprzechwytująca: grupuje i stosuje kwantyfikatory bez zachowywania dopasowania, co jest przydatne, gdy potrzebujesz grupowania, ale nie zależy Ci na przechwyconym tekście.
Jak działają grupy nazwane i zastąpienia $<nazwa>?+−
Napisz (?<nazwa>...) zamiast (...), aby przechwycić grupę pod nazwą zamiast tylko numerem. W trybie zastępowania odwołuj się do niej w tekście zastąpienia jako $<nazwa> - na przykład (?<rok>\d{4})-(?<miesiac>\d{2}) zastąpione przez $<miesiac>/$<rok> zmienia kolejność daty bez konieczności zapamiętywania numerów grup.
Jaka jest różnica między kwantyfikatorem zachłannym (greedy) a leniwym (lazy), np. + a +??+−
Kwantyfikator zachłanny (+, *, {2,4}) dopasowuje jak najwięcej tekstu, a wycofuje się tylko wtedy, gdy jest to konieczne, aby dopasować resztę wzorca. Kwantyfikator leniwy - ten sam symbol, po którym następuje ? - dopasowuje natomiast jak najmniej, rozszerzając się o jeden znak tylko wtedy, gdy jest to potrzebne. Na przykład <.+> względem <a><b> dopasowuje zachłannie cały ciąg <a><b>, podczas gdy <.+?> dopasowuje leniwie tylko <a>.
Co właściwie sprawdzają lookahead i lookbehind, skoro nie konsumują żadnych znaków?+−
Sprawdzają, czy wzorzec pojawia się bezpośrednio przed lub po bieżącej pozycji, nie włączając go do samego dopasowania - więc (?=...) i (?<=...) sprawdzają w przód/w tył, czy coś musi tam być, natomiast (?!...) i (?<!...) sprawdzają, że czegoś tam być nie może. Dlatego możesz użyć \d+(?=px), aby dopasować liczbę tylko wtedy, gdy następuje po niej „px”, przy czym samo „px” nigdy nie pojawia się w dopasowanym tekście.