java按字符分割表达式而不是模式

时间:2018-05-29 21:33:14

标签: java regex split

正则表达式专家,需要帮助解决这个问题:

1, 2, eq, 3, and, 2, 5, eq, 6, or, currentyear('yyy'), eq, 2017

成:

"[() ]"

我正在使用正则表达式:

currentyear('yyyy')

问题是函数表达式sourceSearch | my-search-string | matches If | ${matches} > 0 Click | reply button locator here endIf 也在括号中被拆分。

2 个答案:

答案 0 :(得分:0)

不是防弹,但这个正则表达式应该有效:

"(?<!')[()](?!')|'\\)| '?$"

' / '之前/后面,拆分使用负向前/后,并为尾随')添加拆分空格可选地后面跟一个引号。

答案 1 :(得分:0)

这是最好的:

DataAccessException

输出:

import java.util.regex.Pattern;
class Module1{
  public static void main(String[] asd){
  String sourcestring = "source string to match with pattern";
  Pattern re = Pattern.compile("\\s(?=\\w+\\(.*?\\))|(?:^|\\s)\\(+|\\)$|\\s|\\+|(?<=\\d)\\)",Pattern.MULTILINE);
  String[] parts = re.split(sourcestring);
    for(int partsIdx = 0; partsIdx < parts.length; partsIdx++ ){
      System.out.println( "[" + partsIdx + "] = " + parts[partsIdx]);
    }
  }
}

原始拆分模式:

[0] = 
[1] = 1
[2] = 2
[3] = eq
[4] = 3
[5] = 
[6] = and
[7] = 2
[8] = 5
[9] = eq
[10] = 6
[11] = 
[12] = or
[13] = currentyear('yyy')
[14] = eq
[15] = '2017'

尽管如此,解析器可以做得更好。