[英]Need help splitting the expression with regex
我有这样的表情。
A AND (B OR (C OR D))
我希望括号作为一个单独的字符串,而不是在输出数组中与 C OR D 组合。
[A, AND, (, B, OR, (, C, OR, D, ), )]
追加,
代替SPACE
并在每个(
和之前)
之后使用.split(",")
将解决我的问题。
通过在 split 方法中简单地使用正确的正则表达式,有没有更好的方法来做到这一点?
这个怎么样:
String input = "A AND (B OR (C OR D))";
String regex = "\\s+|(?<=\\()|(?=\\))";
String[] tokens = input.split(regex);
返回:
{A, AND, (, B, OR, (, C, OR, D, ), )}
正则表达式拆分为
我使用了积极的前瞻和积极的后视,它们非常有用,所以一定要查一下(没有双关语)
我希望这会有所帮助:
"A AND (B OR (C OR D))".split(" +| (?=\\()|(?=\\))|(?<=\\()") #=> [A, AND, (, B, OR, (, C, OR, D, ), )]
+ # splits by whitespaces
(?=\\() # splits by whitespace followed by opening brace: e.g. in " (" it would give you single "(" instead of " " and "(" (like in the next part without whitespace in the beginning)
(?=\\)) # splits by empty string followed by closing brace: e.g. "B)" => ["B", ")"]
(?<=\\)) # splits by empty string preceding by closing brace: e.g. "))"
在正则表达式中搜索“Positive lookahead/lookbehind”(我个人使用 regex101.com)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.