Możesz użyć zanegowanych klas znaków, aby wykluczyć określone znaki: na przykład [^abcde]dopasuje wszystko oprócz znaków a, b, c, d, e.
Zamiast podawać wszystkie znaki dosłownie, możesz używać skrótów wewnątrz klas znaków: [\w](małe litery) dopasują dowolny „znak słowa” (litera, cyfry i podkreślenie), [\W](wielkie litery) dopasują wszystko inne niż znaki słowa; podobnie, [\d]dopasuje cyfry 0-9, podczas gdy [\D]dopasuje wszystko oprócz cyfr 0-9 i tak dalej.
Istnieją dwa sposoby na powiedzenie „nie pasuje”: zakresy znaków i ujemne wybieganie w przód / w tył o zerowej szerokości.
Były: nie pasują a, b, club 0:[^a-c0]
Ten ostatni: dopasuj dowolny trzyliterowy ciąg z wyjątkiem fooi bar:
(?!foo|bar).{3}
lub
.{3}(?<!foo|bar)
Ponadto korekta dla Ciebie: *, ?a +nie faktycznie pasuje do niczego. Są operatorami powtórzeń i zawsze następują po operatorze dopasowania. Zatem a+środki dopasować jedną lub więcej a, [a-c0]+środki dopasować jedną lub więcej a, b, club 0, gdy [^a-c0]+będzie pasować do jednego lub więcej z niczego, co nie było a, b, club 0.
Odpowiedzi:
Możesz użyć zanegowanych klas znaków, aby wykluczyć określone znaki: na przykład
[^abcde]
dopasuje wszystko oprócz znaków a, b, c, d, e.Zamiast podawać wszystkie znaki dosłownie, możesz używać skrótów wewnątrz klas znaków:
[\w]
(małe litery) dopasują dowolny „znak słowa” (litera, cyfry i podkreślenie),[\W]
(wielkie litery) dopasują wszystko inne niż znaki słowa; podobnie,[\d]
dopasuje cyfry 0-9, podczas gdy[\D]
dopasuje wszystko oprócz cyfr 0-9 i tak dalej.Jeśli używasz PHP, możesz zapoznać się z dokumentacją klas znaków wyrażeń regularnych .
źródło
Istnieją dwa sposoby na powiedzenie „nie pasuje”: zakresy znaków i ujemne wybieganie w przód / w tył o zerowej szerokości.
Były: nie pasują
a
,b
,c
lub0
:[^a-c0]
Ten ostatni: dopasuj dowolny trzyliterowy ciąg z wyjątkiem
foo
ibar
:(?!foo|bar).{3}
lub
.{3}(?<!foo|bar)
Ponadto korekta dla Ciebie:
*
,?
a+
nie faktycznie pasuje do niczego. Są operatorami powtórzeń i zawsze następują po operatorze dopasowania. Zatema+
środki dopasować jedną lub więceja
,[a-c0]+
środki dopasować jedną lub więceja
,b
,c
lub0
, gdy[^a-c0]+
będzie pasować do jednego lub więcej z niczego, co nie byłoa
,b
,c
lub0
.źródło
^((?!foo).)+$
Dopasuj dowolną linię niezawierającą foo regex101.com/r/z6a65l/4[^]
(w [] ) jest negacją w wyrażeniu regularnym, podczas gdy^
jest „początkiem łańcucha”[^a-z]
dopasowuje dowolny pojedynczy znak, który nie jest od „a” do „z”^[a-z]
oznacza, że ciąg zaczyna się od „a” do „z”Odniesienie
źródło
^
używane na początku zakresu znaków lub ujemnych potwierdzeń lookahead / lookbehind.>>> re.match('[^f]', 'foo') >>> re.match('[^f]', 'bar') <_sre.SRE_Match object at 0x7f8b102ad6b0> >>> re.match('(?!foo)...', 'foo') >>> re.match('(?!foo)...', 'bar') <_sre.SRE_Match object at 0x7f8b0fe70780>
źródło
?!
w ostatnich 2 przykładach, czy możesz po prostu użyć!
samego? Co?
tam robi??
, aby powiedzieć, że jest to rozszerzenie. Inne silniki wyrażeń regularnych mogą mieć własne reguły.