javascript - 正则表达式用 JavaScript 中的条件拆分逗号上的字符串
问题描述
我对 RegEx 表达式很陌生,问题是我想使用 RegEx 拆分具有某些条件的字符串。假设我想用逗号分隔,但如果它后面没有某些特定的东西。以下示例显示了所有内容:
str = "a , b=10 , c=add(3,b) , d"
certainThings = ["add" , "sub"]
str.split(',')
仅用逗号分割的输出是: ["a" , "b=10" , "c=add(3" , "b)" , "d"]
.
但我不想在第三个逗号上拆分,因为它后面是certainThings
数组的元素之一。
预期输出为:["a" , "b=10" , "c=add(3,b)" , "d"]
.
如果先验包含certainThings
数组的一个元素,则可能的解决方案可能是用逗号分隔并连接两个元素。但我认为 RegEx 表达式应该有更好的方法来做到这一点。
解决方案
假设您只需要担心在单嵌套括号内排除逗号,我们可以尝试拆分以下正则表达式模式:
\s*,\s*(?![^(]*\))
这表示以逗号分隔,两边都被可选的空格包围,只要我们不能向前看并且遇到右括号)
而不首先看到一个左括号。这个逻辑排除了里面的逗号,因为那个特殊的逗号在没有看到开头的情况下打了第一个。(
c=add(3,b)
)
(
var str = "a , b=10 , c=add(3,b) , d"
parts = str.split(/\s*,\s*(?![^(]*\))/);
console.log(parts);
推荐阅读
- python - 为“星号前缀”后缀提取域
- javascript - 如何在合并排序期间“暂停”以可视化 JS p5js
- javascript - 为什么我得到 null 的“querySelector”?我在这段代码中做错了什么?
- c# - 如果调试器需要很长时间才能执行某些操作,则在执行过程中退出
- ruby-on-rails - 由于捆绑程序版本,Dokku 失败
- flutter - 如何将小部件作为我班级的输入变量
- soap - 如何为 SoapUI 项目中的请求编写复杂的 dispatchPath?
- blazor-server-side - 如果未通过身份验证,如何重定向到登录页面
- azure-devops - 在发布步骤中从服务连接获取客户端 ID 和客户端密码
- vb.net - 计算 2 个日期之间的唯一值