2

私は正規表現を持っていますが、それは非常に大きいです。許可する文字セットを指定します。それは大きな正規表現になります。反対を指定できれば、つまり、受け入れない文字を指定するだけで簡単になりますか?

^[^\|\^~]*$

しかし、それは機能していません。どんな手掛かり?

4

2 に答える 2

3

これは、これらの 3 文字をどこにも含まない文字列に一致します。

^[^|^~]*$

これは、これら 3 つのいずれかを含むすべての文字列に一致します。

[|^~]

2 つのパターンは同等であるため、最初のパターンを使用するか、2 番目のパターンを否定して使用できます。

于 2010-11-27T19:24:04.637 に答える
1

|逃げたり、~中に入ったりしてはいけません[]。を使用し^[^|^~]*$ます。

>>> re.match(r'^[^|^~]*$', 'abc')
<_sre.SRE_Match object at 0x2dbc4a8>
>>> re.match(r'^[^|^~]*$', '^')
>>> re.match(r'^[^|^~]*$', '|')
>>> re.match(r'^[^|^~]*$', '~')

つまり、最初の例は一致しますが、他の 3 つは必要に応じて失敗します。

于 2010-11-27T19:19:25.230 に答える