我有以下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命令进行测试。
谢谢。
答案 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标记之间的数字