求一个正则表达式 匹配出所有的中括号比如

1....水电费第三方第三方第三方【222】【3333】
展示的 是
【222】
【3333】

2.【3333】 水电费第三方第三方第三方【222】
展示的 是
【222】
【3333】
3.【222】【3333】 水电费第三方第三方第三方【222】【3333】
展示的 是
【222】
【3333】
类似就是这样

匹配所有的中括号及其中内容的正则表达式 【.*?】

我给你一个Java语言的例子,你看看吧

import java.util.regex.Matcher;

import java.util.regex.Pattern;

public class AA {

 public static void main(String[] args) {

  String str="1....水电费第三方第三方第三方【222】【3333】\r\n展示的 是 \r\n【222】\r\n【3333】";

  String regex="【.*?】";

  Pattern p = Pattern.compile(regex);

  Matcher m = p.matcher(str);

  while(m.find()){

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

  }

 }

}

追问

【你好】上课的减肥了开【123123】始减肥了会计师费【你好2】
---------根据正则求的【你好】【你好2】
【你好】上课的减肥了开
-------- 根据正则求的【你好】
【你好】上课的减肥了开【123123】始减肥了会计师费【你好2】
-------- 根据正则求的【你好2】
【】 是不变量 其他为变量

追答

正则只能根据【】取里面的内容,没法根据变化的内容,取里面的变化的内容

追问

意思就是指匹配前后的【】 不匹配中间的【】
按照自己的思想先写 ^(【*.?】)|(【*.?】)$ 但是不行

追答

只匹配头尾的【】不匹配中间的【】的正则表达式 (?m)(^【[^【】]*】)|(【[^【】]*】$)
按照你的要求只匹配头尾的【】不匹配中间的【】的Java程序如下
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class AA {
public static void main(String[] args) {
String str="【你好】上课的减肥了开【123123】始减肥了会计师费【你好2】\r\n【你好】上课的减肥了开\r\n上课的减肥了开【123123】始减肥了会计师费【你好2】\r\n";
String regex="(?m)(^【[^【】]*】)|(【[^【】]*】$)";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(str);
while(m.find()){
System.out.println(m.group());
}
}
}

温馨提示:答案为网友推荐,仅供参考
相似回答