javascript - 是否可以制作一个接受任何子字符串的正则表达式
问题描述
我对正则表达式有点陌生。我了解大部分基础知识,但我正在尝试做的事情超出了我的知识范围,甚至可能是不可能的。
我正在尝试在 JavaScript 中创建一个正则表达式,它可以匹配以下模式中的一系列函数调用。
Name.Name(Params).Name(Params)
名称可以是任何标准的 java 函数名称。我了解如何处理这部分。参数虽然可以是不同数量的参数(目前只有 0-2)
然而,我最大的问题是 params 可能会采用任何带有单引号或双引号或变量名的字符串。我在下面添加了一些示例,因为我需要所有这些来使用我的正则表达式(如果可能)。
例子:
Func.Foo().Bar()
Foo.Bar('foo', bar).Foobar()
Foo.Bar("foo", "bar").bar(')')
Foo.Bar('/"foo/"').bar("foo(bar/")")
我主要关心的是我不能只寻找一个开头和括号甚至两个引号。是否可以使用正则表达式来解析函数调用和参数?
解决方案
对标题中问题的简短回答是肯定的,您可以构建一个匹配任何子字符串的正则表达式。但不幸的是,这不是你想要的。如果您允许任意子字符串,则您的正则表达式将匹配您不想匹配的许多情况,或者它将变得非常复杂(请参阅电子邮件正则表达式以获取示例)。
你想要的是一个标记器!(https://medium.freecodecamp.org/how-to-build-a-math-expression-tokenizer-using-javascript-3638d4e5fbe9)
编辑:对于评论中的解决方案:ast解析器是用于java的,作者想使用javascript。
推荐阅读
- azure - 架构扩展 GRAPH API Azure - 拒绝访问
- git - 尝试自动完成“git stash drop”会产生错误输出
- sql - 如何使用 Access VBA 将两个查询的结果显示到 MS 图表对象上
- routes - Polymer1.0 应用路由器不工作。路由没有发生
- angular - Angular 9 - 延迟加载在生产构建中不起作用
- python - 如何为 mypy 定义类字典的类型?
- python - a = b 和 a = b[:] 有什么区别?
- javascript - ngx-quill:无法创建自定义列表印迹
- java - SWT - 如何判断小部件/复合材料在某些坐标处有滚动条或对象是滚动条
- php - XeroAPI - 禁止发票附件访问