0

正規表現を機能させるのに問題があります。

正規表現は次のとおりです。

([0-9]m)* ([0-9]f)*

「m」または「f」の前に数字を付ける必要がありますが、「m」または「f」はオプションです。例は次のとおりです。

1m 2f
1m
6f

私は何を間違えましたか?

4

1 に答える 1

9

手段は前の*トークンと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)?$
于 2012-04-29T20:13:55.510 に答える