正则表达式在最后一个冒号之后查找字符串

这是一些示例输入:

<210>   DW_AT_name        : (indirect string, offset: 0x55): double

<ae> DW_AT_name : (indirect string, offset: 0x24): long int

<b5> DW_AT_name : int

我想提取代表实际类型的字符串。所以我的输出是:

double

long int

int

这是我到目前为止使用的正则表达式(因为它是Java语言,所以进行了两次转义):

.*DW_AT_name.*:\\s*([^:&&\\S]*)\\s*

它适用于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);

只需找到最后一个,:然后把所有东西都拿走。然后修剪它以删除前导和尾随空格。

我编辑了问题,它还需要检查DW_AT_name。字符串拆分不会[原文如此]。

只需使用即可contains。(编辑后的答案)

以上是 正则表达式在最后一个冒号之后查找字符串 的全部内容, 来源链接: utcz.com/qa/417878.html

回到顶部