簡體   English   中英

正則表達式模式匹配

[英]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.

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