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

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(使用前将#替换为@)

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

  • 将鼠标悬停时的鼠标光标更改为锚状样式

    如果我将鼠标悬停在div鼠标光标将更改为 HTML 锚点中的光标 我怎样才能做到这一点 假设你的div has an id myDiv 将以下内容添加到您的 CSS 中 这cursor pointer指定光标应与用于锚点 超链接 的手形图标
  • 渲染货币和符号并与来自不同单元格的数据相结合

    我正在使用最新的 jQuery DataTables v1 10 7 我正在尝试将数字解析为以下格式 239 90 USD 我可以使用此命令使货币正常工作 columns data Price render fn dataTable ren
  • socket.io 的良好初学者教程? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • IE从哪个版本开始支持Object.create(null)?

    您可以通过多种方式在 JavaScript 中创建对象 creates an object which makes the Object prototype of data var data1 new Object Object liter
  • 如何在react-bootstrap中禁用表单提交的

    在下面的代码片段中 我有许多文本类型的输入表单 如果用户点击 我似乎会得到相同的合成事件 就像他们按下提交按钮一样 我想忽略作为表单提交 只允许一个人按下 提交 按钮 我删除了一些表单组以减少示例 在所有情况下 按钮或 ENTER 键 e
  • 如何更改 Google Maps v3 API for Directions 中的开始和结束标记图像

    我使用 DirectionsRender 绘制了一条路线 但我不知道如何用我自己的标记替换通用的 Google 标记 我知道并在正常的谷歌地图情况下使用它 但发现很难用开始和结束的方向标记来做到这一点 如果这是一个愚蠢的问题 感谢您的任何建
  • 图像无法在带有 DOM 的 IE 中加载:控制台中的 7009 错误(无法解码)

    当在 IE 中的单个页面上加载许多图像时 在 IE11 中重现 其中一些图像开始加载失败 并在控制台中出现类似以下警告的内容 DOM7009 无法解码 URL 处的图像 某些唯一的 url 当我查看网络流量时 似乎确实从服务器收到了每个图像
  • 如何针对 Node.js 中发生的每个错误发送电子邮件?

    假设我的 node js 应用程序正在运行 如果出现错误 我的意思是所有错误 不仅仅是网络错误 如果出现错误 则很重要 我如何调用函数向我发送电子邮件 基本上 在我希望它写入 err out 之前 我希望向我发送一封电子邮件 我正在使用no
  • React-Redux:state.setIn() 和 state.set() 有什么区别?

    我见过使用setIn and set 在一些react redux代码中 state setIn state set 我在这里找到了一些文档https facebook github io immutable js https facebo
  • 有没有办法使用 Rspec/Capybara/Selenium 将 javascript console.errors 打印到终端?

    当我运行 rspec 时 是否可以让 capybara selenium 向 rspec 报告任何 javascript console errors 和其他异常 我有一大堆测试失败 但当我手动测试它时 我的应用程序正在运行 如果不知道仅在
  • 如何制作没有 ng-repeat 的模板并使用 Angular-drag-and-drop-lists 将数据传递到 $scope?

    我想用角度拖放列表 https github com marceljuenemann angular drag and drop lists使用我自己的网格模板到所见即所得编辑器 如何构建我自己的 HTML 模板而不需要ng repeat因
  • 使用 CSS 或 Javascript 填充动画

    我只是想知道是否可以使用 CSS 或 javascript 创建填充动画 基本上我想创建一个填充动画 如下图所示 http i40 tinypic com eit6ia png http i40 tinypic com eit6ia png
  • Javascript split 不是一个函数

    嘿朋友们 我正在使用 javascript sdk 通过 jQuery facebook 多朋友选择器在用户朋友墙上发布信息 但是我收到此错误friendId split 不是函数 这是我的代码 function recommendToFr
  • 使用 php/regex 验证美国电话号码

    EDIT 我混合并修改了下面给出的两个答案 以形成完整的功能 现在它可以完成我想要的功能 然后是一些 所以我想我会将其发布在这里 以防其他人来寻找同样的东西 Function to analyze string against many p
  • 在移动设备上滚动

    这个问题更多的是一个建议研究 我确实希望它对其他人有帮助 并且它不会关闭 因为我不太确定在哪里寻求有关此事的建议 在过去的 6 个月里 我一直在进行移动开发 我有机会处理各种设备上的各种情况和错误 最麻烦的是滚动问题 当涉及到在网站的多个区
  • Three.js 各种大小的粒子

    我是 Three js 的新手 正在尝试找出添加 1000 个粒子的最佳方法 每个粒子都有不同的大小和颜色 每个粒子的纹理是通过绘制画布创建的 通过使用粒子系统 所有粒子都具有相同的颜色和大小 为每个粒子创建一个粒子系统是非常低效的 有没有
  • 在 Shopify 商店中嵌入 Vue 组件

    在产品页面中 我尝试显示自定义 Vue 组件 为简洁起见 该组件根据给定的产品 ID 显示 Firebase 数据库中的一些信息 我最初尝试将其制作为 Shopify 应用程序 以便我可以访问他们的 API 我实现了 OAuth 并且可以检
  • 带参数的事件监听器

    我想将参数传递给 JavaScript 中的事件侦听器 我已经找到了解决方案 但我无法理解它们为什么或如何工作以及为什么其他解决方案不起作用 我有 C C 背景 但是 Javascript 函数的执行有很大不同 您能否帮助我理解以下示例如何
  • Javascript Replace() 和 $1 问题

    我正在尝试创建一个脚本来搜索文本中的模式并在它找到的字符串周围包裹一个标签 shop attributes td each function this html function i html return html replace E 0
  • 如何在执行新操作时取消先前操作的执行?

    我有一个动作创建器 它会进行昂贵的计算 并在每次用户输入内容时调度一个动作 基本上是实时更新 但是 如果用户输入多个内容 我不希望之前昂贵的计算完全运行 理想情况下 我希望能够取消执行先前的计算并只执行当前的计算 没有内置功能可以取消Pro

随机推荐

  • 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 我推断匹配给定正