首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正则表达式查找两个子字符串之间的子字符串

正则表达式查找两个子字符串之间的子字符串
EN

Stack Overflow用户
提问于 2017-09-02 00:49:32
回答 2查看 89关注 0票数 1

我已经查看了其他答案,但似乎无法将它们与我的代码相匹配。我的字符串包含如下内容:

代码语言:javascript
复制
"x": {"field": "Horsepower","type": "quantitative"},
"y": {"field": "Miles_per_Gallon","type": "quantitative"}

我希望能够替换它,这样它看起来就像:

代码语言:javascript
复制
"x": {"field": "...","type": "quantitative"},
"y": {"field": "...","type": "quantitative"},

所以我使用的是str.replace(/regex here/, '...')

我想找出"field": "",之间的关系。我也可以通过查找以"field": "开头、以",结尾的字符串,然后使用

str.replace(/regex here/, '"field": "...",')

我应该为正则表达式设置什么?此外,在regex背后的解释将不胜感激。

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2017-09-02 00:58:39

正则表达式是用于此工作的错误的工具。字符串看起来是JSON,所以解析它,修改解析后的数据结构,然后重新编码为JSON。

代码语言:javascript
复制
var str = '{ "x": {"field": "Horsepower","type": "quantitative"}, "y": {"field": "Miles_per_Gallon","type": "quantitative"}}';

var data = JSON.parse(str);

data.x.field = '...';
data.y.field = '...';

str = JSON.stringify(data);

document.write(str);

票数 2
EN

Stack Overflow用户

发布于 2017-09-02 00:54:31

使用此模式(\{"[^"]+":\s*")[^"]*并替换为\1... Demo

代码语言:javascript
复制
(           # Capturing Group (1)
  \{        # "{"
  "         # """
  [^"]      # Character not in ["] Character Class
  +         # (one or more)(greedy)
  ":        # "":"
  \s        # <whitespace character>
  *         # (zero or more)(greedy)
  "         # """
)           # End of Capturing Group (1)
[^"]        # Character not in ["] Character Class
*           # (zero or more)(greedy)

编辑:如果必须存在 'field',请改用 (\{"field":\s*")[^"]*

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

https://stackoverflow.com/questions/46004781

复制
相关文章

相似问题

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