vit*_*y-t 7 javascript regex node.js
我有一个很大的有效JavaScript文件(utf-8),我需要从中自动提取所有文本字符串.
为简单起见,该文件中不包含任何注释块,只包含有效的ES6 JavaScript代码.
一旦我发现的发生'或"或者',我应该扫描文本块的结尾,是我卡住了,因为所有可能的变化,比如"'",'"'"\'","\"", '",`\``等
是否有已知和/或可重用的算法来检测有效的ES6 JavaScript文本块的结尾?
UPDATE-1:我的JavaScript文件不仅很大,我还必须以块的形式处理它,因此Regex绝对不可用.我不想让我的问题复杂化,提到联合代码块,我会自己解决这个问题,如果我有一个算法可以处理内存中的单个代码.
更新-2:我最初开始工作,感谢这里给出的许多建议,但是由于正则表达式,我再次陷入困境.
正则表达式的示例打破了迄今为止建议的任何文本检测技术:
/'/
/"/
/\`/
Run Code Online (Sandbox Code Playgroud)
仔细研究了这个问题,通过阅读:JavaScript如何检测正则表达式?我担心在JavaScript中检测正则表达式是一个全新的球类游戏,值得一个单独的问题,否则它会变得太复杂.但是,如果有人能指出我正确的方向,我非常感谢...
更新3:经过大量研究后,我遗憾地发现我无法想出一个适用于我的算法的算法,因为正则表达式的存在使得任务比最初想象的要复杂得多.根据以下内容:解析Javascript时,什么决定了斜杠的含义?确定JavaScript中正则表达式的开头和结尾是最复杂和最复杂的任务之一.如果没有它,我们就无法弄清楚符号',''和` 何时打开文本块或者它们是否在正则表达式中.
小智 4
解析 JavaScript 的唯一方法是使用 JavaScript 解析器。即使您能够使用正则表达式,最终它们也不足以完成您在这里尝试做的事情。
您可以使用非常易于使用的几个现有解析器之一,也可以编写自己的解析器,进行简化以专注于字符串提取问题。我很难想象您想编写自己的解析器,即使是简化的解析器。您将花费比您想象的更多的时间来编写和维护它。
例如,现有的解析器将毫不费力地处理类似以下内容。
`foo${"bar"+`baz`}`
Run Code Online (Sandbox Code Playgroud)
解析器使用的明显候选者是 esprima 和 babel。
顺便问一下,提取这些字符串后您打算如何处理它们?
| 归档时间: |
|
| 查看次数: |
395 次 |
| 最近记录: |