正则表达式匹配不在引号内的所有实例

2024-02-24

From this q/a https://stackoverflow.com/questions/2700953/a-regex-to-match-a-comma-that-isnt-surrounded-by-quotes,我推断匹配给定正则表达式的所有实例not引号内,是不可能的。也就是说,它不能匹配转义引号(例如:"this whole \"match\" should be taken")。如果有一种我不知道的方法可以解决我的问题。

但是,如果没有,我想知道是否有任何可以在 JavaScript 中使用的有效替代方案。我已经考虑了一下,但无法提供任何适用于大多数(如果不是全部)情况的优雅解决方案。

具体来说,我只需要使用 .split() 和 .replace() 方法的替代方法,但如果它可以更通用,那将是最好的。

例如:
输入字符串:
+bar+baz"not+or\"+or+\"this+"foo+bar+
将 + 替换为 #(不在引号内)将返回:
#bar#baz"not+or\"+or+\"this+"foo#bar#


实际上,您可以匹配不在任何字符串的引号内的正则表达式的所有实例,其中每个左引号再次闭合。比如说,如上面的示例所示,您想要匹配\+.

这里的关键观察是,如果一个单词后面有偶数个引号,则该单词位于引号之外。这可以建模为前瞻断言:

\+(?=([^"]*"[^"]*")*[^"]*$)

现在,您不想计算转义引号。这变得有点复杂。代替[^"]*,前进到下一个引用,您还需要考虑反斜杠并使用[^"\\]*。到达反斜杠或引号后,如果遇到反斜杠,则需要忽略下一个字符,否则前进到下一个未转义的引号。看起来像(\\.|"([^"\\]*\\.)*[^"\\]*")。结合起来,你到达

\+(?=([^"\\]*(\\.|"([^"\\]*\\.)*[^"\\]*"))*[^"]*$)

我承认这是一个little神秘的。 =)

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

正则表达式匹配不在引号内的所有实例 的相关文章

  • 在 MongoDB 中查找具有字符串 ID 数组的文档

    我有一个 id 字符串数组 我想将其与 find 函数一起使用 db companies find id in arr arr看起来像这样 563a2c60b511b7ff2c61e938 563a2c60b511b7ff2c61e8b7
  • Ext JS - 如何滚动到文本区域的底部

    这是我下面的代码 如何滚动到文本区域的底部 它一定是类似的东西 Ext getCmp output setScrollPosition Ext getCmp output getScrollHeight 这是我的文本区域代码 var myW
  • 如何将中间件绑定到socket.io中的事件

    现在您可以将中间件绑定到io use middleware 但这仅在建立套接字连接时触发 有没有办法在将其传递给事件句柄之前拦截它 就像在expressjs中一样 换句话说 In 快递 js你可以做 app get middleware1
  • 在浏览器中语音聊天? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我们正在寻求建立一个小组 voice 使用服务器上的node js 在浏览器中聊天 这可能吗 如果您希望您的解决方案是基于服务器端和客
  • 将一个文本框的内容复制到另一个文本框

    假设在文本框中输入了一个条目 是否可以在第二个文本框中保留相同的输入文本 如果是这样 这是如何完成的
  • 在 BIRT 中输入参数后更新数据集查询

    在 BIRT 报告设计中传递参数后 如何更改或更新数据集的查询 详细说明 我有一个如下所示的查询 WHERE 该参数标记可以保存不同的值 在用户输入参数后 它看起来像这样 例如 WHERE column name 1 or WHERE co
  • 将 jquery-mobile 与 Webpack 结合使用

    我正在尝试使用 webpack 加载 jquery mobile 但到目前为止还没有运气 我知道 jquery mobile 依赖于 jquery ui 而 jquery ui 又依赖于 jquery 如何在 Webpack 中设置这样的场
  • 除括号之间的内容外,所有内容均小写

    考虑以下字符串 LoReM FOO IPSUM dolor BAR Samet fooBar 我正在寻找一种方法来小写所有内容 除了 brackets 之间的内容应该被忽略 所以期望的输出是 lorem FOO ipsum dolor BA
  • 响应式网格布局框架[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何在 d3 js 中突出显示从根到选定节点的路径?

    我使用 d3 js 创建了一棵树 现在我创建了一个下拉菜单 其中包含树中所有节点的列表 现在 从下拉菜单中选择一个节点时 我想突出显示从根到该特定节点的路径 这个怎么做 首先创建一个 flatten 函数 它将分层数据变成一个 n 数组 f
  • Ember.JS - 如何在同一页面中使用多个模型、控制器和视图?

    我主要了解 Ember JS 的基础知识 大多数示例实际上只处理单个控制器和模型以在页面上显示某些内容 我真的很想用 Ember 构建一个完整的 Web 应用程序 所以有人能告诉我如何组织和连接多个控制器 模型和视图到一个页面中吗 例如 如
  • Emacs 正则表达式:什么 \< 和 \> 可以做 \b 不能做的事情?

    正则表达式反斜杠 GNU Emacs 手册 http www gnu org software emacs manual html node emacs Regexp Backslash html说 lt 匹配单词的开头 gt 匹配单词末尾
  • JavaScript 动画平滑滚动

    默认情况下 当您有这样的片段链接时 a href some url some fragment some text a 浏览器立即向下滚动到该片段 我该如何编程才能使用标准 JS 顺利地向下移动到该片段 这是一个例子 Example htt
  • 如何滚动到div内的元素?

    我有一个滚动的div我想在点击它时发生一个事件 它会强制执行此操作div滚动以查看内部元素 我写的JavasCript是这样的 document getElementById chr scrollIntoView true 但这会在滚动时滚
  • 您如何看待引导模式触发器的相应回调?

    On 引导模态 http getbootstrap com javascript modals 我们知道我们可以为触发器绑定事件 例如show or hide using show shown hide hidden 但此事件绑定仅适用于一
  • 当选择下拉列表中的某些值时,取消选中复选框

    当我从下拉列表中选择某个值或用户未从下拉列表中选择任何值时 我需要取消选中复选框 我现在正在使用 Jquery 这是我现在使用的代码 但它不起作用 Script
  • Express.js Passport认证自动失败跳过策略

    UPDATE 我已将代码从护照本地注册内部移至单独的处理程序 并且运行良好 问题在于 Passport 和本地注册的使用 但我不知道为什么 我使用 Node js Express Passport 进行身份验证和注册设置 这是以前使用过的标
  • 如何更改订阅值?使用 rxJS

    我正在创建一个计时器 需要你的帮助 我刚刚学习 Angular 和 rxJS 对此我有一些疑问 我正在创建一个具有启动 停止 暂停 重置功能的计时器 并且 btn Reset 必须将我的计时器 暂停 到 300 毫秒 怎么做 D 我的启动定
  • Bootstrap 3 / 显示模式不适用于 javascript 方式

    我用Modal http getbootstrap com javascript modalsBootstrap 3 0 的功能 我有这个代码 a href myNestedContent Open the modal containing
  • 根据列中的部分字符串匹配选择数据框行

    我想根据列中字符串的部分匹配从数据框中选择行 例如列 x 包含字符串 hsa 使用sqldf if它有一个like语法 我会做类似的事情 select from lt gt where x like hsa 很遗憾 sqldf不支持该语法

随机推荐

  • JavaScript 游戏框架

    如今与
  • Heroku docker spring boot 镜像错误 503 H14

    几天前 我尝试将 Spring Boot 应用程序的 docker 镜像部署到 heroku 中 我有以下泊坞窗文件 FROM openjdk 8 jdk alpine LABEL maintainer email protected cd
  • java循环重复程序

    我对 Java 非常陌生 我已经在上课的第二周左右了 我需要我的程序根据用户继续运行或退出 这是一个工资计算 我希望最后说 你想继续吗 y n 我希望 Y 重复我的整个问题程序和不结束程序 我正在使用 Jgrasp 而且我是非常非常新的 我
  • 如何在 FiraCode for Visual Studio 2015 中启用连字

    我下载了 FiraCode 字体 并选择它作为 Visual Studio 中的字体 然而 连字没有显示 并且 wiki 没有针对 Visual Studio 的任何特殊说明 尽管他们暗示它可以工作 因为它列在其 WORKS 列中以提供编辑
  • MySQL仅当查询包装为子查询时出现重复列错误

    我有一个如下所示的选择查询 SELECT FROM A LEFT JOIN B ON B x A y LEFT JOIN C WHERE GROUP BY ORDER BY 所有桌子都有id列和查询运行良好 结果有很多id列没有错误并且驱动
  • ASP.NET [GridView 的水平滚动]

    如何为我的大 GridView 制作水平滚动 尝试包裹一个 div style width 100 div 围绕 GridView
  • 创建独立的 .exe 文件

    我有一个在 Visual Studio 2010 中构建的控制台应用程序 当我实际构建项目时 我在 bin Debug MyProj exe 下获取 exe 文件 当我从其他位置粘贴并运行此 exe 时 它 也需要其他文件 有什么想法我怎样
  • 电子邮件客户端如何处理 cookie?

    假设我在电子邮件中的图像请求上设置了 cookie 因此当用户查看电子邮件中的图像时会设置 cookie 如果用户随后点击电子邮件打开浏览器 浏览器是否可以访问我刚刚设置的 cookie 显然 如果用户将 Outlook 作为电子邮件客户端
  • 可移植类库中的 Thread.Sleep()

    The MSDN文档说Thread Sleep 可以用在portable类库 编译器另有说明 除了自旋循环之外 我还有什么选择 Thread CurrentThread Join 也不存在 项目文件
  • Ajax跨源请求被阻止:同源策略不允许读取远程资源

    我正在编写一个简单的网站 它以习语作为输入 并从牛津词典返回其含义和示例 这是我的想法 我向以下 URL 发送请求 http www oxfordlearnersdictionaries com search english direct
  • 组织项目中文件的最佳方式

    组织项目中文件的最佳方式是什么 例如 您是否将所有用户控件放在单独的文件夹中 还是将它们放在子文件夹中 你有业务逻辑文件夹吗 助手类文件夹 我曾经这样组织我的项目 项目 用户控件 模块名称 项目 课程 模块名称 现在我正在学习更多这样的事情
  • Kohana 3 自动加载模型

    我正在尝试使用模型 但出现致命错误 因此我认为它无法正确自动加载 ErrorException 致命错误 类 未找到 属性 模型 有问题的控制器线路 properties new Properties Model 该模型 class Pro
  • 验证 JIRA 时发生卷曲错误

    curl H Content Type application json charset UTF 8 d username admin password admin http localhost 2990 jira rest auth 1
  • 将 JavaScript 字符串拆分为代码点数组? (考虑“代理对”但不考虑“字素簇”)

    将 JavaScript 字符串拆分为 字符 可以轻松完成 但如果您关心 Unicode 并且您应该关心 Unicode 则会出现问题 JavaScript 本身将字符视为 16 位实体 UCS 2 或 UTF 16 https en wi
  • 指定 JavaScript 正则表达式中的模式重复次数

    我在中使用了正则表达式C 有一种方法可以指定任何模式的重复次数 0 9a zA Z 3 15 上面的正则表达式将检查该模式 0 9a zA Z 将重复 3 至 15 次 当我尝试做同样的事情时JavaScript 这是行不通的 var re
  • 多模块 Gradle 项目 - 从 Spring-Boot 1.5 迁移到 2.1

    我想将多模块 spring boot 1 5 项目迁移到 spring boot 2 1 这是一个 gradle 项目 4 9 但不知何故我没有解决它 使用 spring boot 1 5 9 应用程序编译良好 依赖于其他模块的模块也可以解
  • Ajax工具包AjaxFileUpload抛出异常

    我有一个条目表单 我想添加一个文件上传器 我在母版页中添加了一个工具包脚本管理器 然后我添加了一个ajaxfileupload控件
  • 尝试以各种可能的方式嵌入 SVG 对象,但浏览器在渲染 html 时提示保存文件

    已尝试过 W3 学校列出的所有嵌入方法以及更多方法 即使提供了宽度和高度 资源管理器也会显示不正确的大小 chrome和firefox只是提示下载 使用 Visual Studio 2010 内置的开发服务器 可能需要添加 mime 类型来
  • SQL 查询返回过去 24 小时内每小时的值

    我有一个问题 但我真的不知道如何开始 我希望有人能帮助我解决这个问题 我将从解释该表开始 我有一个包含四列的设备表 Device Id Device Status Begin dt End dt 有 6 种不同的状态 其中 3 为简单起见
  • 正则表达式匹配不在引号内的所有实例

    From this q a https stackoverflow com questions 2700953 a regex to match a comma that isnt surrounded by quotes 我推断匹配给定正