1

次のコードを実行してみました。

lin = ',11'
pat = ',([11|01])$'
re.search(pat, lin)

pat には「,11」があり、lin にも「,11」があるため、re.search によって返されるオブジェクトを取得する必要があります。

ただし、この場合は None を返します。

誰でも私を助けてもらえますか?私はそれについてかなり混乱しています。

4

4 に答える 4

5

文字クラスを使用しています: [...]。これらはセットとして機能します。あなたが名前を付けた文字のいずれかが一致します。あなたのキャラクター クラスは、クラスで名前を付けた 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
于 2013-05-03T21:19:04.490 に答える
4

括弧があるため[...]、正規表現は01、またはの 1 文字に一致します|

私はあなたがもっと好きだったと思います,(11|01)$

于 2013-05-03T21:19:22.637 に答える
2

これは機能します:

re.search(r',(11|01)',lin)
于 2013-05-03T21:20:35.030 に答える
0

[11|01]ありません 11 or 01、実際にあり1 or | or 0ます。

これを使用してみてください:

,[10]1$

それはコンマ、次に[1 or 0]、そして1文字列の最後へのアンカーになります。

これを使用することもできます:

,((11)|(01))$
于 2013-05-03T21:18:33.643 に答える