gpt4 book ai didi

javascript - 正则表达式在测试时返回组,但在代码中不返回组?

转载 作者:行者123 更新时间:2023-12-03 11:59:57 26 4
gpt4 key购买 nike

我有以下代码,用于从一段文本中提取三个组:

#sample test string: 'Photo Badge <img src="https://res.cloudinary.com/surveyplanet/image/upload/v1384554966/gdm1z8joraciwjszpygg.png">'
pattern = ///
(.*) #Match all text before the image tag
<img\ssrc="(.*)"> #Match the image tag and extract the image URL
(.*) #Match all text after the image tag
///g
_.map question.choices, (choice) ->
[pre, url, post] = choice.choice_text.match(pattern)[1..3]
console.log 'pre', pre
console.log 'post', post
console.log 'url', url

出于某种原因,无论我传递什么,唯一填充的组都是 pre。我测试了相同的正则表达式 here它按预期分组。谁能明白为什么会发生这种情况?

最佳答案

问题出在正则表达式中的 g 标志。根据 MDN JS 文档,String::matchRegExp::execg 标志存在时有不同的行为。

因此,String::match 不会返回所有捕获组,而是返回字符串中找到的所有匹配项。

您的问题有两种解决方案:

  • 删除 g 标志(为什么你需要它?)。
  • 使用pattern.exec(str)而不是str.match(pattern)

关于javascript - 正则表达式在测试时返回组,但在代码中不返回组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25456066/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com