簡體   English   中英

正則表達式匹配某個模式和介於兩者之間的某個數量的值

[英]regular expression to match a certain pattern and a certain number of values in between

抱歉標題令人困惑...我正在編輯我繼承的 android 應用程序的簡單 java 方法。 目前是這樣的:

     String id = "\\border_3_4_5_.*\\b";

匹配:

        order_3_4_5_anything

現在我想更新它以便匹配,以便它可以匹配任何值 5、6、7、8 而不僅僅是 5,並且 rest 保持不變。

       order_3_4_[5 or 6 or 7 or 8]_

我嘗試了以下方法:

         String id = "\\border_3_4_[5|6|7|8]_.*\\b";
         String id = "\\border_3_4_(5|6|7|8)_.*\\b";
         String id = "\\border_3_4_[5,6,7,8]_.*\\b";

但無法讓它工作。

如果我正確理解了您的要求,那就是匹配以下輸入,

order_3_4_5_
order_3_4_6_
order_3_4_7_
order_3_4_8_

因此,上述適當的正則表達式是,

String pattern = "order_3_4_[5|6|7|8]_.*"

您必須簡單地去掉正則表達式開頭和結尾的“\b”。 不太清楚你為什么在那里使用那些反斜杠。 您給出的正則表達式將匹配以下示例輸入,

\border_3_4_5_\b
\border_3_4_6_\b
\border_3_4_7_\b
\border_3_4_8_\b

這是因為在您的正則表達式中,“\”相當於一個反斜杠,因為第一個反斜杠是為了轉義第二個反斜杠。 同樣,在末尾,“\b”相當於一個后跟 b 的反斜杠,同樣因為第一個反斜杠是為了轉義第二個反斜杠。

你可以在這里測試這些正則表達式

希望這個答案對您有所幫助,如果確實如此。 如果您將我的回答標記為“已接受”,我將不勝感激。 再會!

正如@idl99 所說,我不確定\\b ,但您可以使用其中任何一種正則表達式模式:

order_3_4_(5|6|7|8)_.*

order_3_4_[5678]_.*

order_3_4_[5-8]_.*

旁注:您可以在此處測試您的正則表達式: https://regex101.com/

暫無
暫無

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

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