に特定のパターンを抽出する:桁の文字数字
の文字ができ* + -/X X
は、どのように私は3.5 <br> パターンpythonで特定のパターンを抽出したいのpython <br> に新しいですPythonの
どうすればいいですか?
私はパターン[0-9 \ */+ - xX \ 0-9]を使用しようとしましたが、文字列にあるいずれかの文字を返します。
例:2 * 3や2×3または2 + 3または2-3
を一致させる必要がありますがasdXyzはない
に特定のパターンを抽出する:桁の文字数字
の文字ができ* + -/X X
は、どのように私は3.5 <br> パターンpythonで特定のパターンを抽出したいのpython <br> に新しいですPythonの
どうすればいいですか?
私はパターン[0-9 \ */+ - xX \ 0-9]を使用しようとしましたが、文字列にあるいずれかの文字を返します。
例:2 * 3や2×3または2 + 3または2-3
を一致させる必要がありますがasdXyzはない
あなたは
[0-9][*+/xX-][0-9]
使用することができなければならないか、文字列全体にマッチする:
のPython 3.xでは^[0-9][*+/xX-][0-9]$
、あなたは^
(文字列アンカーの開始)と$
(文字列の末尾のアンカー)の場合を破棄してもよいですre.match()関数は偽陽性を防ぐために開始し、文字列の末尾に検索を制限します
if re.fullmatch(r'[0-9][*+/xX-][0-9]', '5+5'):
print('5+5 string found!')
if re.fullmatch(r'[0-9][*+/xX-][0-9]', '5+56'):
print('5+56 string found!')
# => 5+5 string found!
regex = r "[0-9] [* +/xX - ] [0-9]"これは機能しました。私はいくつかのテストをさせてください。ありがとうたくさん:) –
さて、私は、不要な答えの部分を削除しました。ちょうどあなたのパターンは、定義されたセット/範囲からの単一の文字にマッチしました。どのような方法を使用したかによって、異なるシナリオが異なる可能性がありますが、問題はすべてを1つの文字クラスに入れてしまうことでした。 –
:あなたはre.fullmatch
(demo)内のパターンを使用しています。
\d
と一致させることができます。x
の正確に一つの一致した[x/+\-]
、/
、+
、または-
と一致させることができます。\d
と一致させることができます。:
>>> re.match(r'(\d)([x/+\-])(\d)', '3/4').groups()
('3', '/', '4')
いくつかの有効な例を提供してください。 –
私は '[0-9] [\ * + -/xX] [0-9]'だけでいいと思います。 – ForceBru