如何扩展正则表达式提取多行代码中的指定字符与文本
正则提取解决方案
直接给你能实现需求的正则,以及对应的用法:
正则表达式
ƒS\.Speech\.tell\(\s*(characters\.\w+)\s*,\s*("[\s\S]*?")\s*\)
怎么用这个正则
这个正则会精准匹配ƒS.Speech.tell()的调用结构,同时捕获两个关键部分:
characters.xxx格式的第一个参数- 带引号的第二个文本参数
在支持正则捕获的工具(比如VS Code、各类正则编辑器)里,把匹配到的内容替换成$1, $2(部分工具用\1, \2),就能直接得到你要的结果。
比如在VS Code里操作:
- 打开查找替换面板(Ctrl+F),勾选「正则表达式」按钮
- 查找框贴上面的正则
- 替换框输入
$1, $2 - 点击「替换全部」,就能批量提取出目标内容
正则拆解(不想看可跳过)
ƒS\.Speech\.tell\(:匹配函数调用的开头,转义.是为了避免被当作通配符\s*:匹配参数前后的任意空白(包括空格、换行、制表符),兼容代码里的换行缩进(characters\.\w+):专门捕获第一个参数,characters\.是固定前缀,\w+匹配后面的标识符名称\s*,\s*:匹配分隔两个参数的逗号,同时忽略前后的空白("[\s\S]*?"):捕获带引号的文本,[\s\S]能匹配包括换行在内的所有字符,*?是非贪婪模式,防止把后面的引号也匹配进去\s*\):匹配函数右括号前的空白,兼容代码里的换行缩进
内容的提问来源于stack exchange,提问作者Anne Maier
相关产品推荐
相关产品推荐

