2011-10-28 18 views

Odpowiedz

11

Ogólnie rzecz biorąc nie oznacza to niczego, a nawet może spowodować błąd (jeśli znak zapytania nie jest zgodny z prawidłowym znakiem). Ale są pewne znaki, które mają wpływ, a mianowicie, czy ta postać jest również używana jako modifier.

regular-expressions.info mówi o tym konkretnym składnią:

Nowoczesne smaki regex pozwalają na zastosowanie modyfikatorów tylko część wyrażenia regularnego. Jeśli wstawisz modyfikator (?ism) w środku wyrażenia regularnego, modyfikator ma zastosowanie tylko do części wyrażenia regularnego po prawej stronie modyfikatora. Możesz wyłączyć tryby, poprzedzając je znakiem minus. Wszystkie tryby po znaku minus będą wyłączone. Na przykład. (?i-sm) włącza niewrażliwość dużych i małych liter oraz wyłącza tryb jedno-liniowy i wielowierszowy.

Nie wszystkie smaki regex obsługują to. JavaScript i Python stosują modyfikatory wszystkich modów do całego wyrażenia regularnego. Nie obsługują one składni (?-ismx), ponieważ wyłączenie opcji nie ma sensu, gdy modyfikatory trybu mają zastosowanie do całych wyrażeń regularnych. Wszystkie opcje są domyślnie wyłączone.

Możesz szybko sprawdzić, w jaki sposób smak regexu, którego używasz, obsługuje modyfikatory trybu. Polecenie regex (?i)te(?-i)st powinno być zgodne z test i TEst, ale nie z teST ani TEST.

?i oznacza, że ​​wszystko, co następuje po tych znakach, powinno być dopasowane do wielkości liter bez względu na wielkość liter.

Należy również zauważyć, że zgodnie z tekstem nie wszystkie smaki regex obsługują tę składnię.

+0

Świetnie! Rozumiem. BTW, to świetna strona internetowa –

Powiązane problemy