Here is some sample input:
<210> DW_AT_name : (indirect string, offset: 0x55): double
DW_AT_name : (indirect string, offset: 0x24): long int
DW_AT_name : int
I want to extract the string that represents the actual type. So my output would be:
double
long int
int
Here is the regex I have so far (double escaped because it's in Java):
.*DW_AT_name.*:\\s*([^:&&\\S]*)\\s*
It works for the int, but it doesn't work for the other two. I think the best solution is to basically say 'get everything after the last colon' but I'm not sure how. Note that it must also include the DW_AT_NAME stuff.
解决方案
You need no regex for this:
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);
Simply find the last : and take everything after that. Then trim it to remove leading and trailing whitespace.
I edited my question, it needs to also check for DW_AT_name. String split wont [sic] do that.
Just use contains, then. (edited answer)