簡體   English   中英

具有重復模式的正則表達式

[英]Regular expression with repetitive pattern

我需要一個正則表達式來匹配

%foo(%bar) 或 %foo。

我現在正在使用此代碼:

String code = "%foo(%bar)";
code.matches("%+[\w&&[^_]][\w0-9]+[\w0-9&&[^_]]");

但它只適用於第二種情況。

編輯:我的正則表達式必須檢查變量是否包含數字和字母,以及它是否以 _ 開頭或以 _ 結尾。 我不想與_%foo%foo__%foo_

正確的 Java 正則表達式是

Pattern pat = Pattern.compile("%\\w+(?:\\(%\\w+\\))?");

第一個或最后一個沒有下划線:

Pattern pat = Pattern.compile("%[\\w&&[^_]]\\w*[\\w&&[^_]]" +
                                  "(?:\\(%[\\w&&[^_]]\\w*[\\w&&[^_]]\\))?");

此模式要求名稱中至少包含兩個字符。 如果應接受單個非下划線,則可以將第二部分和第三部分設為可選:

    Pattern pat = Pattern.compile("%[\\w&&[^_]](?:\\w*[\\w&&[^_]])?" +
                                  "(?:\\(%[\\w&&[^_]](?:\\w*[\\w&&[^_]])?\\))?");

假設%foo%bar是以%符號開頭的單詞,則正則表達式為:

%\w+(\(%\w+\))?

暫無
暫無

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

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