正規表現を機能させるのに問題があります。
正規表現は次のとおりです。
([0-9]m)* ([0-9]f)*
「m」または「f」の前に数字を付ける必要がありますが、「m」または「f」はオプションです。例は次のとおりです。
1m 2f
1m
6f
私は何を間違えましたか?
手段は前の*
トークンと0回以上一致しますが、これは希望するものとは異なります。
これらは、必要な正規表現を作成するのに役立ちます。
?
0または1の一致を意味します。|
交代のため。(?:...)
非キャプチャグループの場合。^
文字列の最初と$
最後に固定します。それを知っていると、おそらく自分で解決策を見つけることができると思いますが、完成させるために、考えられる解決策を1つ紹介します。
あなたの質問はあまり明確ではないので、私はあなたが以下を一致させたいと仮定するつもりです:
1m 2f
1m
6f
0m
そして、あなたは以下を一致させないようにしたい:
1
m
11m
1m 1m
2f 3m
1m 2f
"1m 2f"
これらの仮定が正しくない場合は、質問をより明確にしてください。
これらの仮定で、これを試してください:
^[0-9]m(?: [0-9]f)?$|^[0-9]f$
2f 3m
一致させたい場合は、これを使用します。
^[0-9]m(?: [0-9]f)?$|^[0-9]f(?: [0-9]m)?$