簡體   English   中英

如何匹配直到最后一次出現特殊字符集的所有內容?

[英]How to match everything up to the last occurence of a special character set?

我正在嘗試修改我的正則表達式拆分器。

我的表達很簡單:匹配一個字符集的一個或多個出現: \\s*[|()!=\\s]+

運行此示例將得出:

(output !==(not output)) | (output)
//output, not output, output

現在,我要執行以下操作:“如果出現一個=字符,則在后面匹配所有字符,直到最后一次出現同一字符集為止。”

再次查看上面的示例,它可以看到第一個= ,然后應完全匹配以下內容: !==(not output)) | ( !==(not output)) | (

怎么辦呢?

我不確定這是否意味着以后使用,但對於您當前的輸入,它是否有效

String data = "(output !==(not output)) | (output)";
Matcher m = Pattern.compile("(\\w+)\\s*(?=!?==)(.*)\\1").matcher(data);
//                           ^-group1          ^   ^-repeated group1
//                                             |group 2
while (m.find()) {
    System.out.println(m.group(2));//match from group 2
}

輸出:

!==(not output)) | (

暫無
暫無

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

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