簡體   English   中英

正則表達式返回方括號(但不是括號)之間的字符

[英]Regex to return the characters between square brackets (but not the brackets)

我正在尋找一個RegEx來返回兩個方括號之間的所有字符,只返回字符,而不是括號本身。

例如,給出一個看起來像"[A][B2][1,1][ABC]"的字符串

正則表達式應該返回: AB21,1ABC

我已經為String#splitPatternMatch嘗試了各種表達式。

我得到的最接近的是:

String.split("[\\\\[]*[\\\\]]"); Pattern.compile("\\\\[[^\\\\]]+(?=])");

這兩個都回歸: [A[B2[1,1[ABC

我發現其他表達式使用括​​號括起來返回值(即Pattern.compile("\\\\[[^\\\\]]*\\\\]"); )但這不是我所追求的。

有人知道正確的表達嗎? 或者我正在努力做不到的事情?

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

你需要lookaheadslookbehinds 。或者

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

您只需要一個捕獲組來保留您想要的模式部分。

String s  = "[A][B2][1,1][ABC]";
Pattern p = Pattern.compile("\\[([^]]*)]");
Matcher m = p.matcher(s);
while (m.find()) {
  System.out.println(m.group(1));
}

Ideone演示

你可以用它。

Pattern.compile("\\[(.*?)\\]");

暫無
暫無

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

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