如何创建正则表达式来查找 JS 文件(或 JSON)中的所有字符串
Posted
技术标签:
【中文标题】如何创建正则表达式来查找 JS 文件(或 JSON)中的所有字符串【英文标题】:How to create a Regexp To find all strings in JS files (or JSON) 【发布时间】:2015-02-01 00:49:16 【问题描述】:我正在尝试提取 js 文件中的所有字符串。 (在崇高文本“搜索所有文件”中使用正则表达式)
例如,这是一个文本文件:
a='string1'
b='string2'
c="string3"
alert("string\"4")
alert('string\'5')
所以,我有这个正则表达式:
/('.*?')|(".*?")/
我发现了这个:
['string1'].['string2',"string3"]
但我还需要:
["string4","string5"]
我该怎么做?
(我正在寻找 RegExp 解决方案 - 一个 RegExp 句子)
还有一件事:最好的解决方案是,如果也可以忽略文件中的所有 JS cmets。 (不提取JS字符串,在cmets中)
谢谢。
【问题讨论】:
alert('string\'5")
不是正确的字符串,因为它没有正确关闭,是错字吗?
已修复。意思是:alert('string\'5')
那么["string4","string5"]
是错误的,因为它们实际上是["string\"4","string\'5"]
。
我不使用 ST,但我很快在 Google 上搜索了“崇高文本结构搜索”,第一次点击是 grasp,这似乎可以满足您的需求(以及更多)。
【参考方案1】:
你可以试试下面的正则表达式。
(['"])(?:\\\1|(?!\1).)*?\1
DEMO
(['"])
捕获 '
或 "
引号并将其存储到组索引 1 中。
(?:\\\1|(?!\1).)
这允许转义字符(由组索引 1 捕获的字符)。或者不是被捕获的字符零次或多次。
\1
必须以组索引 1 捕获的字符结尾。
它还匹配"string'5'"
或'string"5"'
等字符串
【讨论】:
以上是关于如何创建正则表达式来查找 JS 文件(或 JSON)中的所有字符串的主要内容,如果未能解决你的问题,请参考以下文章