以下是一些示例输入:
<210> DW_AT_name : (indirect string, offset: 0x55): double
<ae> DW_AT_name : (indirect string, offset: 0x24): long int
<b5> DW_AT_name : int
Run Code Online (Sandbox Code Playgroud)
我想提取代表实际类型的字符串.所以我的输出是:
double
long int
int
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止的正则表达式(双重逃脱,因为它是在Java中):
.*DW_AT_name.*:\\s*([^:&&\\S]*)\\s*
Run Code Online (Sandbox Code Playgroud)
它适用于int,但它不适用于其他两个.我认为最好的解决方案是基本上说"在最后一次结肠后得到所有东西",但我不确定如何.请注意,它还必须包含这些DW_AT_NAME东西.
你不需要这个正则表达式:
String yourString = "<210> DW_AT_name : (indirect string, offset: 0x55): double";
String result;
if (yourString.contains("DW_AT_name")) {
int lastIndex = yourString.lastIndexOf(":");
result = yourString.substring(lastIndex + 1).trim();
} else {
result = "ERROR"; // or handle this however you want
}
System.out.println(result);
Run Code Online (Sandbox Code Playgroud)
只需找到最后一个:并在此之后采取一切.然后修剪它以删除前导和尾随空格.
我编辑了我的问题,它还需要检查DW_AT_name.字符串拆分不会[原文如此].
contains那么就用吧.(编辑答案)