我目前正致力于创建一个正则表达式,以分割出符合以下格式的所有字符串:& [ text ]并需要获取文本 。字符串可能看起来像:& [ text ]& [ text ]任何东西& [ text ]等。
我尝试过以下正则表达式,但我似乎无法让它工作:& \ [(。*)\]
非常感谢任何帮助。
答案 0 :(得分:1)
关于逃跑,括号有点棘手。试试这个:
Pattern r = Pattern.compile("&\\[([^\\]]*)\\]");
Matcher m = r.matcher("foo &[bla] [foo] &[blub]&[blab]");
while (m.find()) {
System.out.println("Found value: " + m.group(1));
}
我用一组不是右括号的符号替换了你的点。否则,明星运算符会贪婪地匹配,直到字符串的最后。你也可以抑制与问号的贪婪匹配,这更好看:"&\\[(.*?)\\]"
答案 1 :(得分:0)
您需要做的两件事:
import java.util.regex.Matcher; import java.util.regex.Pattern; public class Test { public static void main(String[] args) { String s = "&[test] something ] something &[test2]"; Pattern pattern = Pattern.compile("&\\[([^\\[\\]]*)\\]"); Matcher matcher = pattern.matcher(s); while (matcher.find()) { System.out.println("capture group: " + matcher.group(1)); } } }