首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Regex匹配两个字符串之间的特定字符。

Regex匹配两个字符串之间的特定字符。
EN

Stack Overflow用户
提问于 2019-06-18 14:37:31
回答 2查看 64关注 0票数 1

我把这个json放在一个附件里:

代码语言:javascript
运行
复制
{"message": "This is a "bad-json" message" "severity": "INFO"}

我需要匹配消息中的每个双引号,用单引号替换它们,保留其他双引号,如下所示:

代码语言:javascript
运行
复制
{"message": "This is a 'bad-json' message" "severity": "INFO"}

因此,我有一个正向展望和正面展望的准则:

代码语言:javascript
运行
复制
(?<="message": ")(.*)(?=","severity")

但是我不知道如何只获取内部的引号来进行替换,我尝试了更改(.*)部分,但似乎是全部或者没有,而且我还无法捕获双引号。

下面是一个例子:RegexR

我一直在寻找其他的答案,但大多数都是我找到的所有角色,Regex匹配,但仍然不够好。

编辑:

以下是更多的样本:

代码语言:javascript
运行
复制
{"message": "This is a "bad-json" message with "bad json" quotes","severity": "INFO"}
{"message": ""bad-json" message at start and end "bad json"","severity": "INFO"}
{"message": "many "bad-json" "bad-json" "bad-json", "bad-json" "bad-json" messages all over the place","severity": "INFO"}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-18 15:12:21

你可以用

代码语言:javascript
运行
复制
(\G(?!^)|"message": ")([^"]*)"(?=.*?","severity")

代之以$1$2'

详细信息

  • (\G(?!^)|"message": ") -第1组:上次匹配或"message": "子字符串的结尾
  • ([^"]*) -第2组:除双引号外的任何0或多个字符
  • " -双引号
  • (?=.*?","severity") --在当前位置右侧的任意0或多个字符之后,需要一个","severity"子字符串。
票数 1
EN

Stack Overflow用户

发布于 2019-06-18 14:45:26

在这里,我们可以设计一个简单的表达式,类似于:

代码语言:javascript
运行
复制
(.*"message"\s*:\s*".*?)"(.*?)"(.*?"\s*".*)

有了这样的替代:

代码语言:javascript
运行
复制
$1'$2'$3

而且可能管用。

演示

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56651595

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档