用于提取数字的正则表达式

时间:2010-08-03 00:14:04

标签: vb.net regex

我希望能够从格式如下的字符串中提取数字:

“< [1085674730]>你好foo1,你好吗?”

我是正则表达式的新手,我只想提取一个包含在大于/小于和括号中的数字,但我不知道如何去做。我必须只匹配数字,但我不确定只使用哪种语法来搜索这些符号。

更新:

谢谢大家的输入,抱歉没有更具体,正如我向kiamlaluno解释的那样,我正在使用VB.Net作为我的应用程序的语言。我想知道为什么有些实现不起作用。事实上,唯一有效的是Matthew Flaschen所描述的那个。但是它捕获了数字周围的符号以及数字本身。我想只捕获符号中包含的数字,并过滤掉符号本身。

4 个答案:

答案 0 :(得分:4)

使用:

<\[(\d+)\]>

使用ECMAScript regex进行测试。

这意味着:

  • \[ - 文字[
  • ( - 开放捕获组
  • \d - 数字
  • + - 一个或多个
  • ) - 关闭捕获组
  • \] - 文字]

整体功能是捕获由给定字符包围的一个或多个数字。

答案 1 :(得分:0)

使用:

/<\[([[:digit:]]+)\]>/

如果您的实现不支持方便的[:digit:]语法,请使用:

/<\[([\d]+)\]>/

如果您的实现不支持方便的\d语法,请使用:

/<\[([0-9]+)\]>/

答案 2 :(得分:0)

$subject = "<[1085674730]> hello foo1, how are you doing?";
preg_match('/<\[(\d+)\]>/', $subject, $matches);

$matches[1]将包含您要查找的号码。

答案 3 :(得分:0)

将Mathews帖子与外观结合http://www.regular-expressions.info/lookaround.html。这将排除前缀和后缀。

(?<=<\[)\d+(?=\]>)

我没有测试这个正则表达式,但它应该非常接近你需要的。仔细检查所提供的链接。

希望这有帮助!