【问题标题】:Java splitting a string while ignoring any delimiters between bracketsJava拆分字符串,同时忽略括号之间的任何分隔符
【发布时间】:2012-03-28 05:04:49
【问题描述】:

我正在寻找 java 正则表达式来拆分 inputString,同时忽略括号/多个括号之间的分隔符。

Java 代码:

Pattern p = Pattern.compile("[,regex?]");
String[] desiredOutput =p.split(inputString);

例如:

inputString="1,{2,{3},4},{4,5},6";

desiredOutput with ;分隔符:

1;{2,{3},4};{4,5};6

谢谢!

【问题讨论】:

    标签: java regex parsing split


    【解决方案1】:

    使用正则表达式是不可能的。

    表达式必须匹配带有平衡括号的字符串。 (这不是常规语言。)

    您需要使用其他一些解析技术或通过计数{} 手动完成。

    【讨论】:

    • 1+ 这需要做成一个“粘性”帖子或常见问题解答,因为它被问了很多次,但通常是在 CSV 或数学表达式解析的上下文中。
    • 更准确地说,Java 的正则表达式是不可能的。 .NET 或 Perl 对递归正则表达式没有任何问题。
    • @TimPietzcker,对。那么如果这个问题被标记为 Perl,你认为正则表达式会是一个合适的工具吗? (诚​​实的问题:-)
    • @TimPietzcker @aioobe 基本上,这种表达式不适合Regular Grammar 的定义,因此正则表达式不是正确使用的工具。 en.wikipedia.org/wiki/Regular_grammar
    • @aioobe Meh,我从来没有机会炫耀我的才智:P
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-16
    • 2010-12-17
    • 2010-10-23
    相关资源
    最近更新 更多