亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Java正則表達式提取方括號或圓括號內的內容

Java正則表達式提取方括號或圓括號內的內容

墨色風雨 2022-05-25 16:58:23
我正在嘗試在方形或圓形中提取字符串。字符串可能只有方括號或圓括號我正在使用下面的正則表達式。Pattern p = Pattern.compile("\\[(.*?)\\]|\\((.*?)\\)");輸出字符串也包括括號。下面是代碼。String example = "Example_(xxxxx)_AND_(yyyyy)_2019-01-28";Pattern p = Pattern.compile("\\[(.*?)\\]|\\((.*?)\\)");Matcher m = p.matcher(example);while(m.find()) {    System.out.println(m.group(1));}上述模式給出的輸出為(xxxxx)(年年)預期輸出為xxxxx年年
查看完整描述

3 回答

?
月關寶盒

TA貢獻1772條經驗 獲得超5個贊

您可以編寫一個不需要交替的正則表達式,并且只能擁有一個您可以唯一訪問的組以獲取值,如果您使用積極的環顧四周來使用此正則表達式捕獲您的預期值,則效果會更好,


(?<=[([])[^()[\]]*(?=[)\]])

解釋:


(?<=[([])- 正面看后面確保前面的字符是(或者[

[^()[\]]*- 匹配除左括號或右括號外的任何字符

(?=[)\]])- 積極向前看,以確保它匹配)或]

演示


示例 Java 代碼,


String s = "Example_(xxxxx)_AND_(yyyyy)_2019-01-28";

Pattern p = Pattern.compile("(?<=[(\\[])[^()\\[\\]]*(?=[)\\]])");

Matcher m = p.matcher(s);

while (m.find()) {

    System.out.println(m.group());

}

印刷,


xxxxx

yyyyy

或者,就像我上面提到的那樣,您可以使用這個非環顧正則表達式并僅捕獲 group1 來獲取您的內容,因為這個正則表達式沒有任何交替,因此只有一個組。


[([]([^()[\]]*)[)\]]

沒有環視正則表達式的演示


帶有非環視正則表達式的示例 Java 代碼,您需要在其中捕獲使用group(1)


String s = "Example_(xxxxx)_AND_(yyyyy)_2019-01-28";

Pattern p = Pattern.compile("[(\\[]([^()\\[\\]]*)[)\\]]");

Matcher m = p.matcher(s);

while (m.find()) {

    System.out.println(m.group(1));

}

印刷,


xxxxx

yyyyy


查看完整回答
反對 回復 2022-05-25
?
冉冉說

TA貢獻1877條經驗 獲得超1個贊

這是一個完整的例子。


public class ExtractContentExample {


    private static final Pattern PATTERN2 = Pattern.compile("^[^\\(]{0,}\\(|([\\)][^\\(\\)]{1,}[\\(])|\\)[^\\)]{0,}$");


    public void test22212 () {

       String[] split = PATTERN2.split("(I )Comparison_(am )_AND_(so )_2019-01-28Comparison_(handsome!)");

       for (int i = 0; i< split.length; i++) {

           if (split[i] != null && !split[i].isEmpty()) {

               System.out.println(split[i]);

           }

       }

   }


}

我希望這個能幫上忙


查看完整回答
反對 回復 2022-05-25
?
尚方寶劍之說

TA貢獻1788條經驗 獲得超4個贊

您可以使用前瞻和后視:-

(?<=\[).*?(?=\])|(?<=\().*?(?=\))

或者您可以將德摩根定律應用于上述正則表達式并使用:-

(?<=\[|\().*?(?=\]|\))

解釋

(?<=\[|\()- 前面是[or (
.*?- 任意數量的字符,非貪婪
(?=\]|\))- 后面是]or)


查看完整回答
反對 回復 2022-05-25
  • 3 回答
  • 0 關注
  • 294 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號