次のコードを実行してみました。
lin = ',11'
pat = ',([11|01])$'
re.search(pat, lin)
pat には「,11」があり、lin にも「,11」があるため、re.search によって返されるオブジェクトを取得する必要があります。
ただし、この場合は None を返します。
誰でも私を助けてもらえますか?私はそれについてかなり混乱しています。
文字クラスを使用しています: [...]
。これらはセットとして機能します。あなたが名前を付けた文字のいずれかが一致します。あなたのキャラクター クラスは、クラスで名前を付けた 3 つの固有のキャラクターのいずれか1
、|
またはキャラクターと一致します。0
文字クラスの後に乗数を指定しなかったため、 1 つの文字[...]
のみに一致します。
>>> re.match(',([11|01])$', ',1')
<_sre.SRE_Match object at 0x1106d1648>
>>> re.match(',([11|01])$', ',0')
<_sre.SRE_Match object at 0x1106d16c0>
>>> re.match(',([11|01])$', ',|')
<_sre.SRE_Match object at 0x1106d1648>
文字を正確に一致させたい場合は、クラスを削除します。
pat = ',(11|01)$'
これは、リテラル文字11
または01
次のいずれかに一致します。
>>> re.match(',(11|01)$', ',11')
<_sre.SRE_Match object at 0x1106d16c0>
>>> re.match(',(11|01)$', ',01')
<_sre.SRE_Match object at 0x1106d1648>
または、文字クラスを引き続き使用する場合は、次のようにします。
pat = ',([01]1)$'
|
or演算子をグループ化するために括弧が不要になったため、それらを削除して次のように簡略化できます。
pat = ',[01]1$'
デモ:
>>> re.match(',[01]1$', ',01')
<_sre.SRE_Match object at 0x1106bc5e0>
>>> re.match(',[01]1$', ',11')
<_sre.SRE_Match object at 0x1106bc648>
>>> re.match(',[01]1$', ',00') is None
True
>>> re.match(',[01]1$', ',10') is None
True
>>> re.match(',[01]1$', ',|') is None
True
括弧があるため[...]
、正規表現は0
、1
、またはの 1 文字に一致します|
。
私はあなたがもっと好きだったと思います,(11|01)$
。
これは機能します:
re.search(r',(11|01)',lin)
[11|01]
ありません 11 or 01
、実際にあり1 or | or 0
ます。
これを使用してみてください:
,[10]1$
それはコンマ、次に[1 or 0]
、そして1
文字列の最後へのアンカーになります。
これを使用することもできます:
,((11)|(01))$