簡體   English   中英

Java正則表達式可選字符

[英]java regular expression optional characters

我無法正常使用正則表達式。

正則表達式為:

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

“ m”或“ f”之前必須有一個數字,但“ m”或“ f”是可選的。 示例如下:

1m 2f
1m
6f

我做錯了什么?

*表示與上一個標記匹配0次或更多次,這看起來與您想要的不一樣。

這些應該可以幫助您構建所需的正則表達式:

  • ? 表示0或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)?$

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM