这可能超出了正则表达式的效用,但是......
java字节码中的方法签名以(
开头,后跟
Lcom/packagename/Someclass;
[
然后是原始代码或对象参数[[
表示,然后是类型代码。嵌套数组可以持续一段时间。例如[[[[I
for int [] [] [] [] )
和返回类型的类型代码。因此public String replace(char c1, char c2, String s) {}
的代码为(CC)Ljava/lang/String;
public int[][][][][][][][][][] ouch() {}
的代码为()[[[[[[[[[[I
我开始使用这个java正则表达式,它似乎捕获了一些东西,但并不总是有效。另外,我不知道如何捕获Lobject;类型。
\([B-Z]{0,1}|[\[]+[B-Z]{0,1}\)([A-Z]|[\[]+[A-Z])
我正在使用this出色的在线java正则表达式测试程序。
更新:我将稍微简化一下,只考虑parens中的项目而不考虑对象类。
我想出了这个
\((\[*I|\[*S|\[*C|\[*B|\[*F|\[*D|\[*Z)*\)
匹配(ISCBFDZ)
,(I)
,(I[[C)
和(I[C)
等内容。但它似乎将ISCBFDZ分组为一个单独的字符串,我不明白。