如何用正则表达式匹配所有以$t('开头、第一个'结尾的字符串?
解决正则匹配第一个单引号结束的问题
你的问题出在正则里的.*是贪婪匹配,它会尽可能匹配更多内容,直到遇到最后一个符合条件的',所以才会把后面的, ['name', 'age也包含进去。
修改方案有两种:
方案1:使用非贪婪匹配
把.*改成.*?,让匹配尽可能少的内容,遇到第一个'就停止:
/(?<=$t\(')(.*?)(?=')/gi
方案2:使用排除型字符组(更高效)
直接匹配所有不是单引号的字符,这样天然只会到第一个'就结束:
/(?<=$t\(')([^']*)(?=')/gi
测试你的示例文本,两种方案都能准确匹配到aaa.bbb、ccc.ddd、eee.fff。
内容的提问来源于stack exchange,提问作者Eddie
相关产品推荐
相关产品推荐

