【问题标题】:Why is my non-greedy Pattern (.*?) greedy?为什么我的非贪心模式 (.*?) 贪心?
【发布时间】:2016-01-26 00:37:26
【问题描述】:

我遇到了正则表达式模式的问题。我正在使用非贪婪的 .*? 但它似乎也很贪婪?你能帮帮我吗?

我的字符串:

myString = '{"testname":"mytest","type":{"aaa111":{"url":"http://www.test01.com"},"222bbb":{"url":"http://www.test02.com"},"ccc333":{"url":"http://www.test03.com"}}}';

我的模式:

/"(.*?)":{"url"/g

结果:

testname":"mytest","type":{"aaa111, http://www.test01.com"},"222bbb, http://www.test02.com"},"ccc333

但结果“应该”是:

aaa111, 222bbb, ccc333 

【问题讨论】:

  • JS 包含原生解析 JSON 的方法。你不使用它有什么原因吗?
  • / " ( [^"]+ ) ":\{"url" /gx
  • @Daedalus 谢谢,我忘记了这个功能。
  • @Borodin 也谢谢你。

标签: javascript regex


【解决方案1】:

解决此问题的一种方法是确保它不匹配多个 "(双引号)

"([^"]+?)":{"url

https://regex101.com/r/oU6eX4/1

虽然我同意其他 cmets 的观点,但可能有更好的解决方案不涉及正则表达式。

【讨论】:

  • 感谢您提供的模式。它帮助我理解了我的错误:-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-24
  • 2012-04-27
相关资源
最近更新 更多