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