当前位置: 首页 > 面试题库 >

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

靳祺然
2023-03-14
问题内容

这是一些示例输入:

<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。(编辑后的答案)



 类似资料:
  • 我用Python编写了这个正则表达式并在regex101上进行了测试,但它仍然没有按照我想要的方式工作: 我试图找到的是一种模式,其中字符串可以选择以这些符号之一开头或结尾,中间只有数字: 该列表包括破折号、正斜杠、反斜杠、括号、符号、空格和句号。如果字符串只包含中间的数字,并且在字符串的开头和/或结尾有可选标点,则搜索应返回true。 此正则表达式似乎适用于大多数情况,但如果我在中间的数字中添加

  • 我试图使用正则表达式来检查字符串中的第一个和最后一个字符是否是a-z之间的字母字符。 我知道这与第一个字符匹配: 但是我如何检查最后一个字符呢? 这: 不起作用。我怀疑这两个条款之间应该有什么区别,但我不知道是什么!

  • 问题内容: 我想匹配字符串中最后一次出现的简单模式,例如 但是,如果字符串 很 长,则会生成大量匹配项。有没有更直接的方法来匹配第二次出现的“ AAAA”,还是应该使用此替代方法? 问题答案: 您可以使用表示行末字符: 另外,请注意,这是变量的坏名称,因为它隐藏了内置类型。要访问列表的最后一个元素,您可以使用index:

  • 我有这个正则表达式: 这为我提供了许多我所需要的结果。但是,我无法检查一个条件: 我不希望我的最后一个字符是“-”。它可以出现在第二个“/”之后的任何位置,而不是最后一个字符。更准确地说,最后一个字符应该是任何,而不是连字符“-”。 我查看了这个,但是我无法理解它。这到底是怎么做到的。

  • 问题内容: 我是新来的正则表达式,并且想知道如何用短语来表示最后一个之后的所有东西。 我正在提取Google GData使用的ID。 我的示例字符串是 ID在哪里: 哦,我在用PHP。 问题答案: 这至少匹配以下项之一(非斜杠),然后是字符串的结尾: 笔记: 没有理由,因为它不需要任何组-结果进入组0(匹配项本身)。 使用(而不是),以便如果最后一个字符是斜杠,则它不匹配(而不是匹配空字符串)。

  • 有没有简单的方法来检查字符串的第一个和最后一个字符是否相同,只使用正则表达式? 我知道你可以和查拉特核实一下 我不是要求正则表达式匹配第一个字符和最后一个字符