W celu prostego wyszukiwania i wyodrębniania ciągów znaków — zamiast wyrażeń regularnych — należy stosować metody klasy String, takie jak
indexOf()
,
substr()
lub
substring()
.
Niektóre operacje, które mogą być wykonywane za pomocą wyrażeń regularnych, mogą być również wykonywane za pomocą metod klasy String. Na przykład: w celu określenia, czy ciąg znaków zawiera inny ciąg, można użyć metody
String.indexOf()
lub zastosować wyrażenie regularne. Jeśli jednak dostępna jest metoda klasy String, wówczas ta metoda działa szybciej niż równoważne wyrażenie regularne i nie wymaga tworzenia innego obiektu.
Aby zgrupować elementy bez izolowania treści grupy w wyniku, należy w wyrażeniu regularnym zastosować grupę nieprzechwytującą („
(?:xxxx)
”) zamiast grupy („
(xxxx)
”).
W wyrażeniach regularnych o umiarkowanej złożoności części wyrażenia są często grupowane. Na przykład: w następującym wzorcu wyrażenia regularnego nawiasy tworzą grupę wokół tekstu „ab”. W konsekwencji kwantyfikator „+” ma zastosowanie do grupy zamiast do pojedynczego znaku:
/(ab)+/
Domyślnie zawartość każdej grupy jest „przechwytywana”. Zawartość każdej grupy we wzorcu można uzyskać jako część wyniku wykonania wyrażenia regularnego. Przechwytywanie wyników grupowania trwa dłużej i wymaga większej ilości pamięci, ponieważ wyniki grupowania są zawarte w obiektach. Alternatywnie można zastosować składnię grupy nieprzechwytującej poprzez dołączenie znaku zapytania i dwukropka po nawiasie otwierającym. Taka składnia określa, że znaki zachowują się jak grupa, ale nie są przechwytywane dla wyniku:
/(?:ab)+/
Zastosowanie składni grupy nieprzechwytującej jest szybsze i obciąża pamięć w mniejszym stopniu niż zastosowanie standardowej składni grupy.
Jeśli wydajność wyrażeń regularnych jest niska, należy rozważyć zastosowanie alternatywnego wzorca wyrażeń regularnych.
W niektórych przypadkach w celu testowania oraz identyfikowania określonego wzorca tekstu można wykorzystać więcej niż jeden wzorzec wyrażenia regularnego. Z różnych przyczyn niektóre wzorce są wykonywane szybciej niż wzorce alternatywne. Jeśli okaże się, że wyrażenie regularne powoduje wolniejsze działanie kodu, należy wziąć pod uwagę inne wzorce wyrażeń regularnych, które pozwolą uzyskać takie same wyniki. Następnie należy przetestować te wzorce w celu określenia, który z nich działa najszybciej.
|
|
|