PHP:RegEx用于解析JAVA类中的特定函数

我必须使用PHP解析JAVA类。 所有java类都实现了我的接口,因此我在类中总是需要相应的函数。 它看起来像:</ p>

  public void init(Something driver,Parameters params){...} 
</ code> </ pre>

我提出了以下正则表达式:</ p>

  / public \ s + void \ s + init \ s * \(\ s * Something \ s +(\ w +)\ s  *,\ S *参数\ S +(\ W +)\ S * \)\ S * \ {([^ }] +)} \ S * / 
</代码> </ PRE>

除了在我的函数体内某处有“}”符号的情况外,它工作正常。 有没有办法处理这些情况?</ p>
</ div>

展开原文

原文

I have to parse JAVA classes with PHP. All java classes implement my interface, so there is always corresponding function required by me in the class. It looks like:

public void init(Something driver, Parameters params) { ... }

I came up with the following regular expression:

/public\s+void\s+init\s*\(\s*Something\s+(\w+)\s*,\s*Parameters\s+(\w+)\s*\)\s*\{([^\}]+)\}\s*/

It works fine except the situations when there is "}" symbol somewhere inside the body of my function. Is there any way to handle these situations?

1个回答



试试下面的正则表达式,</ p>

  public \ s + void \  S + INIT \ S * \(\ S *的东西\ S +(\ w +)\ S * \ S *参数\ S +(\ w +)\ S * \)\ S * \ {((?:[^ {}  ] *(?:{[^ {}] *})?)+ [^ {}] *)} \ s * 
</ code> </ pre>

DEMO </ p>
</ div>

展开原文

原文

Give a try to the below regex,

public\s+void\s+init\s*\(\s*Something\s+(\w+)\s*,\s*Parameters\s+(\w+)\s*\)\s*\{((?:[^{}]*(?:{[^{}]*})?)+[^{}]*)\}\s*

DEMO

dsaob80228
dsaob80228 不幸的是,它可能在init函数之后在类中有其他函数。
大约 6 年之前 回复
dongyao4419
dongyao4419 是最后的}将是最后的输入?
大约 6 年之前 回复
dtxpz8785
dtxpz8785 感谢您的回答! 只有在函数体中没有不成对的数字括号时才有效。 例如,有评论:\\}你好!
大约 6 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问