正则表达式专家,需要帮助解决这个问题:
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
也在括号中被拆分。
答案 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'
尽管如此,解析器可以做得更好。