正则表达式:查找括号之间的所有内容 - 包括括号是否存在于 [closed] 中

Regex: Find all between parenthesis - including if parenthesis exists within [closed]

提问人:sdavis891 提问时间:11/17/2023 更新时间:11/17/2023 访问量:43

问:


想改进这个问题吗?更新问题,使其仅通过编辑这篇文章来关注一个问题。

3天前关闭。

我正在研究一个正则表达式来提取类似 JS 的函数的原始字符串,我想在其中提取方法/函数名称和方法/函数的参数/参数

.replace(“你好”, “世界”).trim().replace(“鸡肉”, “油炸”).upper()

正则表达式:\.(\w+)\((.*?)\)

这适用于上面的字符串......但是,如果周围有括号,则它不完全匹配。()

我一直在为正面和负面的展望/落后而苦苦挣扎,想知道这样的事情是否可能?

下面是一个示例,它不起作用:

.replace(/(测试)/g, “”).trim().replace(“”, “”).upper()

正则表达式

评论

3赞 Wiktor Stribiżew 11/17/2023
不要使用正则表达式,有专门的解析器。
1赞 InSync 11/17/2023
您尝试解析的语言是什么,您正在使用的语言是什么?
0赞 sdavis891 11/17/2023
@WiktorStribiżew我不想将其解析为有效的 JS,而只是获取这些括号之间的字符串数据。
0赞 sdavis891 11/17/2023
@InSync这纯粹是 JS (NodeJS) - 我应该提到这一点。有一种解决方案是用户输入字符串数据,我正在收集字符串响应,我想提取这些数据用于其他用途。
0赞 Peter Mortensen 11/17/2023
回复“我应该提到这一点”:你应该更新问题。(但是 *** ***

答:

0赞 Nicolas 11/17/2023 #1

正如 Wiktor 所说,专用解析器始终是此类处理的最佳选择。

但是,如果您仍然想使用正则表达式路由,您可以简单地添加一个积极的前瞻,以查找点、分号或字符串的末尾。

\.(\w+)\((.*?)\)(?=\.|$|;)

您可以在此处测试更多案例:https://regex101.com/r/QJ1h59/1

不过,这并不完美。如果调用中的正则表达式在括号后面使用点,则正则表达式将与正确的字符串不匹配。总会有这样的情况,你最好使用专用的解析器。

评论

1赞 sdavis891 11/17/2023
有趣的是,我几乎有这个确切的陈述,但没有意识到你可以以你所拥有的方式输入。你帮我解决了!$