1

複数の文字列を正規表現で照合する OR 機能を探しています。

# I would like to find either "-hex", "-mos", or "-sig"
# the result would be -hex, -mos, or -sig
# You see I want to get rid of the double quotes around these three strings.
# Other double quoting is OK.
# I'd like something like.
messWithCommandArgs =  ' -o {} "-sig" "-r" "-sip" '
messWithCommandArgs = re.sub(
            r'"(-[hex|mos|sig])"',
            r"\1",
            messWithCommandArgs)

これは機能します:

messWithCommandArgs = re.sub(
            r'"(-sig)"',
            r"\1",
            messWithCommandArgs)
4

2 に答える 2

1

角かっこは、1 文字のみに一致する文字クラス用です。複数の代替文字に一致させたい場合は、グループを使用する必要があります (角括弧ではなく括弧)。正規表現を次のように変更してみてください。

r'"(-(?:hex|mos|sig))"'

(?:...)別のキャプチャ グループは必要ないため、非キャプチャ グループを使用しましたが、引用符以外はすべてであるr'"(-(hex|mos|sig))"'ため、実際には同じように機能することに注意してください\1

r'"-(hex|mos|sig)"'代わりに使用r"-\1"して、代わりに使用できます(-はグループの一部ではなくなったためです。

于 2012-06-11T19:32:50.350 に答える
0

[]に一致させるには、メタ文字を削除する必要がありhex or mos or sigます。(?:-(hex|mos|sig))

于 2012-06-11T19:32:51.520 に答える