对于我的字节码分析项目,我使用 ASM 库来操作字节码。在字节码级别,源代码中的此方法声明:
void m(int i, String s)
表示为字符串:
(ILjava/lang/String;)[I
|__ Parameters |__ Return type
在这里,我使用字符串操作技术从该字符串中提取参数。我需要在另一个字符串数组中得到这样的输出:(这样我就可以将字节码表示转换为相应的 Java 表示):
{I,Ljava/lang/String;}
为此,我尝试使用正则表达式来提取以开头L
和结尾的所有匹配;
项(以获取 Ljava/lang/String 形式的字符串;其他我可以管理的字符串):
/\L([^L;]+)\;/
但它没有给我任何匹配。我的问题是:
- 谁能帮我纠正上面的正则表达式?
- 或者更好的是,如果有人从事过这些类型的操作,如果有任何 API 可用于转换,你能指出我
Bytecode representations --> Java code representations
吗?