[英]regex pattern match
我正在使用java正則表達式庫來查找模式“String_OneOrMoreDigits”。 例如,“linenumber_1”或“linenumber_31”或“linenumber_456”。 我正在嘗試以下模式,假設我將獲得“linenumber_2”或“linenumber_44”類型的字符串。 但是,我只是得到“linenumber_2”類型的字符串,它最后不匹配多個數字。 如何匹配這些字符串?
Pattern pattern = Pattern.compile("(linenumber_[0-9])|(linenumber_[0-9][0-9])");
無需替換,只需在[0-9]
上使用“一個或多個”限定符:
Pattern pattern = Pattern.compile("linenumber_[0-9]+");
這將匹配“linenumber_1”和“linenumber_44”和“linenumber_12345984”。 如果你只想匹配一個或兩個數字,你可以做到這一點的是更加明確的允許的位數:
Pattern pattern = Pattern.compile("linenumber_[0-9]{1,2}");
要添加,如果你想要特定的數字,而不是
Pattern pattern = Pattern.compile("linenumber_[0-9]{1,2}");
你也可以用
Pattern pattern = Pattern.compile("linenumber_[0-9]{1|4|8}");
這將指定您想要1位,4位或8位數。 和克勞德說的那樣,
Pattern pattern = Pattern.compile("linenumber_[0-9]+");
將匹配任意數量的數字。
你也可以用:
Pattern pattern = Pattern.compile("linenumber_\d+");
如果你需要不區分大小寫的匹配,請在開頭追加(?i)
,如下所示:
Pattern pattern = Pattern.compile("(?i)linenumber_\d+");
(?i)
允許正則表達式引擎執行不區分大小寫的匹配。 \\d
將匹配0 to 9
任何數字
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.