求一个正则表达式

问题描述

实际字符串长度不固定

字符串:(A.finished || B.start) && (C.finished || D.start)
注意:. 后面可能是中文 例如: (A.完成 || B.开启)

我想拿到拆分后的列表
也就是:
A.finished
B.start
C.finished
D.start

或者

A.完成
B.开启

这中结果。。

阅读 1.5k
2 个回答
'(A.finished || B.start) && (C.完成 || D.开启)'.match(/\b[A-Z]\..+?(?=\)|\s)/g);
//["A.finished", "B.start", "C.完成", "D.开启"]
新手上路,请多包涵

java里面使用与js不太一样,具体例子如下:

public static void main(String[] args) {
    String regex = "\\b[A-Z]\\..+?(?=\\)|\\s)";
    String content = "(A.finished || B.start) && (C.完成 || D.开启)";
    Pattern pattern = Pattern.compile(regex);
    Matcher matcher = pattern.matcher(content);
    List<String> expressionList = Lists.newArrayListWithCapacity(matcher.groupCount());
    while (matcher.find()) {
        expressionList.add(matcher.group());
    }
    System.out.println(expressionList.toString());
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题