*, ?, +
wszystkie znaki oznaczają dopasowanie do tego znaku. Który znak oznacza „nie” pasuje do tego? Przykłady by pomogły.
*, ?, +
wszystkie znaki oznaczają dopasowanie do tego znaku. Który znak oznacza „nie” pasuje do tego? Przykłady by pomogły.
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 .
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
lub 0
:[^a-c0]
Ten ostatni: dopasuj dowolny trzyliterowy ciąg z wyjątkiem foo
i 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
, c
lub 0
, gdy [^a-c0]+
będzie pasować do jednego lub więcej z niczego, co nie było a
, b
, c
lub 0
.
^((?!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”
^
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>
?!
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.