2017-02-13 8 views
0

私は、フォームフィールドにバレーボールの試合に有効なスコアが含まれていることを検証しようとしています。ここで私が持っているものだ、と私はそれがうまくいくと思うが、私は任意の手段によって、正規表現の専門家ではない:スポーツスコアを解析するための正規表現

r'^ *([0-9]{1,2} *- *[0-9]{1,2})(((*[,;] *)|([,;] *)|(*[,;])|[,;]| +)[0-9]{1,2} *- *[0-9]{1,2})* *$' 

すると、私はそれが本当に正規表現の一致のために重要ではないことを、パイソン/ジャンゴを使用しています。私は正規表現を学ぼうとしているので、より最適な正規表現は役に立つ/参考になります。ここ

スコアの規則は次のとおり 1. 1つ以上の有効なセット(セット=ゲーム)の結果は 2に含まれる各結果は、フォームのDD-DD、0 < = DD < =でなければならない存在であることができます99 3.各追加の結果は[。]のいずれかによって分離されなければならない 4セット> = 1の任意の数 5スペースが数

の中央を除いてどこにも許容されるべきである含めることを許可しますしたがって、以下のすべてが有効です。 25-10または25 -0または25-9または23-25(1つまたは複数のスペースが可能) 25-10,25-15または25-10; 25-15または25-10 25-15(やはりスペースが許されます) 25-1 2 -25,25-3; 4-25 15-10

また、結果を解析するための別の単位として必要です。したがって、上記の最後の例では、私は別に上で動作できるようにする必要があります: 25-1 2 -25 25〜3 4から25 15-10

私はストリップができればそれは素晴らしいことです各結果内のスペース。空白は結果セット間の有効なセパレータなので、すべてのスペースを削除することはできません。

答えて

0

私はthisはあなたの問題の解決策だと思います。

str.replace(r"(\d{1,2})\s*-\s*(\d{1,2})", "$1-$2") 

仕組み:1つのまたは2の数字の (\d{1,2})キャプチャグループ。
\s*空白が0個以上見つかりました。
- find - 。

$1あなたもthisを見ることができますキャプチャグループ2

のコンテンツとコンテンツを置き換えるキャプチャグループの内容1
$2でコンテンツを交換してください。

+0

それは私が思いついた混乱よりはるかに簡単です。私は可能なスコア入力の様々な順列に対して今日それをテストします。ありがとう! –

+0

ありがとう!それはあなたのためにうまくいく:)いくつかのポイント; P –

+0

の文字列が正確に私を置き換えなかったが、はるかに良い解決に私を導く: –

関連する問題