使用正则表达式从字符串中获取数字

时间:2010-11-24 19:07:30

标签: java regex

我有以下html行

<b>String :</b></b></td><td class="title">14</td>

我正在尝试解析它以便只获取数字。看起来很简单,但“s/^.*\(:digit:\).*$/\1/”显示整行。 我也尝试了“s/^.*\(\d+\).*$/\1/”,但它返回了相同的结果。

如果尝试“s/^.*String.*>\(.*\)<.*$/\1/”命令,则返回所需内容但“s/^.*String.*>\(\d+\)<.*$/\1/”再次返回整行。

您是否认为可以从字符串中获取数字,仅包括组中的数字?

编辑:我需要它用于Java语言。这里的示例是用于获取正则表达式的juts,我使用sed命令进行测试。

谢谢。

5 个答案:

答案 0 :(得分:3)

答案 1 :(得分:0)

在javascript中你可以这样做:

var num = parseInt(someString.replace( /\D/g , ''));

答案 2 :(得分:0)

虽然您没有解释您正在使用的语言,但答案很简单。

当您捕获表达式(括号)时,会有多个结果。

第一个,#0,始终是整场比赛。由于您在数字之前和之后有.*,因此结果中会包含额外的HTML。

但是,在第二场比赛#1中,你应该只有这个号码。检索此结果的方式因语言而异,但如果您更新问题,我们可能会在这方面为您提供帮助。

编辑:

public static String extractNumber(String input) {
    Pattern p = Pattern.compile("s/(\\d+)/");

    Matcher m = p.matcher(input);

    if(m.find()) {
        String num = m.group(1);
        return Integer.parseInt(num);
    }

    return null;
}

这将提取它在输入文本中找到的第一个数字。并且,它还演示了如何使用组。

我没有测试它,因为我目前没有设置适当的java环境,但它看起来没问题。如果您有任何问题,请告诉我。

答案 3 :(得分:0)

我认为你有一个稍微特殊的正则表达式实现。环境是什么?

   s/^[^\d]*\(\d+\)<[^\d]**$/\1/
但是,值得一试。检查设置模式是否需要[或[和是否允许字符类(\ d))。如果没有字符类0-9应该这样做。

答案 4 :(得分:0)

正则表达式(?:<(?:[^>])+>)(\d+)(?:(?:<\/[^>]+)+>)仅捕获文本中html标记之间的数字