Php注释正则表达式
我需要用regexp解析php docComment注释。可能的注释:Php注释正则表达式,php,regex,json,Php,Regex,Json,我需要用regexp解析php docComment注释。可能的注释: /** * @Annotation() * @Annotation\Name("var1", "var2") * @Annotation(["var1", "var2"], "var3") * @Annotation\Filter\Name(["var1", "var2"], "var3", {"var4": "var5"}) */ 基本上是@Annotation()。在php中,我像这样解码json\u dec
/**
* @Annotation()
* @Annotation\Name("var1", "var2")
* @Annotation(["var1", "var2"], "var3")
* @Annotation\Filter\Name(["var1", "var2"], "var3", {"var4": "var5"})
*/
基本上是@Annotation()
。在php中,我像这样解码json\u decode('['.$json']')
现在我使用regexp/@(\w+[\w+]*)\(([^\)]*)?\)/
,但这并不总是正确的。例如:
@Annotation("name()")
我应该使用什么regexp
是否可以分析行中的多个注释
/**
* @a() @b("var1")
* ....
*/
更新:
如何在regexp中编写:
# match annotation name
# if brackets are empty
# match ()[space|newline]
# (else) if something is in brackets
# match everything until:
# ")[space|newline]
# or })[space|newline]
# or ])[space|newline]
更新2
这个regexp@((\w+)([\w+])(?:\(\s*)\124;\(.*?[“\\]))(?:\ s$)*)(?:\s$)
)可以简化吗
将其修改为:
@([\\\w]+)\((.*)\)
更新3
有关一行中的更多注释:
@([\\\w]+)\((.*?)\)(?:\s|$)
更新4
根据上次编辑:
@([\\\w]+)\((?:|(.*?[]"}]))\)
@注释(“name@name.com“
将失败是否可以匹配@注释(“name()”
和@注释(”name@name.com)谢谢你的帮助。你的regexp几乎就是我想要的,但是@Annotation(“name()”,“aaa”)
将失败。查看我的问题更新:)@Tomas检查我的更新。你不打算记住更多的东西吗?!;)谢谢@revo的时间和知识。你帮了我很多忙。(?:@Annotation)([^(+)*\(.+)(?=\)
?你可以用$2(第二个捕获组)访问json,也可以选择使用$1(第一个捕获组)例如,如果您想知道\Name
或\Filter\Name
,我认为不可能有像“Name()”
这样的内容,并且在一行上有两个批注。此正则表达式适用于您的内容类型,但不适用于多行批注。