java regex,仅当不在引号或括号中时才以逗号分隔

2024-05-04

我想通过正则表达式进行java split。 当字符串不在单引号或括号中时,我想在每个逗号上分割字符串。 例子:

Hello, 'my,',friend,(how ,are, you),(,)


 should give:
    hello
    my,
    friend
    how, are, you
    ,

我试过这个:

(?i),(?=([^\'|\(]*\'|\([^\'|\(]*\'|\()*[^\'|\)]*$)

但我无法让它工作(我通过测试http://java-regex-tester.appspot.com/ http://java-regex-tester.appspot.com/)

有任何想法吗?


嵌套括号不能被正则表达式分割。手动拆分它们更容易。

public static List<String> split(String orig) {
    List<String> splitted = new ArrayList<String>();
    int nextingLevel = 0;
    StringBuilder result = new StringBuilder();
    for (char c : orig.toCharArray()) {
        if (c == ',' && nextingLevel == 0) {
            splitted.add(result.toString());
            result.setLength(0);// clean buffer
        } else {
            if (c == '(')
                nextingLevel++;
            if (c == ')')
                nextingLevel--;
            result.append(c);
        }
    }
    // Thanks PoeHah for pointing it out. This adds the last element to it.
    splitted.add(result.toString());
    return splitted;
}

希望这可以帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java regex,仅当不在引号或括号中时才以逗号分隔 的相关文章

随机推荐

  • 如何获取uinput创建的设备的名称(路径)

    我已经成功设置了一个小程序来创建uinput questions tagged uinput我计划使用它来自动测试接收键盘输入事件的应用程序 我已关注both http thiemonge org getting started with
  • 使用 JPA 保存 Map

    在类中保留以下映射的最佳方法是什么 Entity class MyClass ManyToMany cascade CascadeType ALL Map
  • Netty:正确关闭 WebSocket

    如何从服务器端正确关闭 WebSocket 通道 连接 如果我使用一个ctx getChannel close the onerror在浏览器 Firefox 9 中抛出 页面加载时与 ws localhost 8080 websocket
  • 如何修复错误 MC1000 未知构建错误,“找不到类型“System.Web.UI.TagPrefixAttribute”

    我有一个 WPF 项目 对于我正在使用的报告服务 Microsoft ReportingServices ReportViewerControl WebForms Microsoft ReportingServices ReportView
  • 如何更改同一行元素的位置

    我有一个包含 3 个元素的块 最小值 产品库存 最大值 我需要做的就是找到一种方法将产品库存调整到两个值之间 我的猜测是问题应该出在这些线上 div class max inline parent div class inline bloc
  • iPhone 负数键盘布局?

    我的用户需要输入纬度和经度 当然我需要验证输入的值是否是合法的纬度 经度值 我想要一个键盘布局 可以为我完成一些工作 消除字母字符 标点符号等 只留下数字和 数字键盘似乎无法做到这一点 缺少 SDK 附带的任何其他键盘布局也无法做到这一点
  • Spring MVC:如何在 Thymeleaf 中获取当前 url

    我在用Thymeleaf 模板引擎 http www thymeleaf org doc html Using Thymeleaf html使用 Spring Web MVC 在当前 url 的帮助下创建 url 时我陷入困境 有什么方法可
  • 组件内调用 Mixin 的方法(Vuejs)

    我无法从组件调用 mixin 方法 出现此错误this hello is not a function 我可以打电话hello 来自 Vue 实例 但我无法在组件内调用它 有什么事吗 div div
  • 何时以及如何使用 C++ htonl 函数

    cout lt lt Hello World lt lt endl 对于我在堆栈上的第一篇文章overflow 我们什么时候应该使用htonl功能 我已经浏览了手册页 但是 我不太明白何时以及如何使用它 Host TO N网络翻译 它确保e
  • MS SQL 2008 如何读取日志

    我有一个有很多行的表 有什么办法可以找出来当插入具体行时 我没有创建 更新时间列 Thanks 检查日志以读取此类信息可以在单个日志条目的基础上完成 但该格式仍然没有记录 而且解码起来确实不容易 我只会出于纯粹的兴趣或取证目的而查看它 如果
  • 使用 parse.com 并遇到分配内存问题

    我是编程新手 过去 3 个月我一直在制作应用程序 并学到了一些东西 但我还没有遇到如何解决这个问题 我一直使用 Parse com 作为我的服务器 发送图片 保存用户数据等 有了所有这些数据 如果我多次打开某些活动 特别是带有图片的活动 应
  • Windows Workflow Foundation 4 和 ASP.NET MVC

    我们正在评估 Windows Workflow Foundation 4 在基于 MVC 3 的 Web 应用程序中的使用 我们希望为不同的项目创建灵活的订单工作流程 有人知道有关此类应用程序的一般架构或实践实验室的详细信息吗 一些具体问题
  • SAXException:错误的信封标签

    我正在尝试连接到通过 Web 服务客户端保护的 Web 服务 https Eclipse 生成了一个基于存根的 Web 服务客户端 对我来说看起来不错 当我尝试从 Web 服务调用方法时 问题就出现了 String a String web
  • 循环数据并创建单独的图形

    我正在循环遍历不同分子名称的列表 并尝试为每个分子生成单独的无花果 但对于每个连续的分子 新的数据也包含了之前的所有数据 我在收集数据后打印了数据 并且对于每个循环 它都显示了正确的数量 这是我的完整代码 import matplotlib
  • 获取 firebase 函数实例 id?

    据我了解 firebase 函数在Google 函数执行环境 这意味着函数在单个实例中执行 根据这个文件 https cloud google com functions docs concepts exec 新的函数实例仅在两种情况下启动
  • pymssql(python模块)无法使用临时表

    这不是一个问题 而是一个先发制人的答案 我从这个网站得到了很多帮助并想回馈 当我尝试使用 pymssql 通过 python 运行它时 我正在努力处理大量 SQL 查询 这些查询失败了 但直接通过 MS SQL 运行时却运行良好 例如 就我
  • 使用 Android Volley 发出 HTTPS 请求

    我正在尝试使用以下代码发出 https 请求 RequestQueue queue Volley newRequestQueue getApplicationContext request new Request
  • Laravel Eloquent 在 with() 函数中使用别名

    再会 laravel 中使用 with 函数时是否可以使用别名 举个例子 posts Post where condition gt with user as friend gt get 简短的回答是否定的 但您可以定义与要使用的别名的关系
  • 有聚合物模板的印章活动吗?

    我试图在每次标记其内容时将输入元素聚焦在聚合物模板内 问题是在模板加载之前我无法选择输入元素 目前 我只是使用 setTimeout 在模板加载后 100 毫秒集中输入 但我想知道是否有更优雅的解决方案 此外 自动对焦属性不起作用 因为模板
  • java regex,仅当不在引号或括号中时才以逗号分隔

    我想通过正则表达式进行java split 当字符串不在单引号或括号中时 我想在每个逗号上分割字符串 例子 Hello my friend how are you should give hello my friend how are yo