次のコードを実行してみました。
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))$