我希望能够从格式如下的字符串中提取数字:
“< [1085674730]>你好foo1,你好吗?”
我是正则表达式的新手,我只想提取一个包含在大于/小于和括号中的数字,但我不知道如何去做。我必须只匹配数字,但我不确定只使用哪种语法来搜索这些符号。
更新:
谢谢大家的输入,抱歉没有更具体,正如我向kiamlaluno解释的那样,我正在使用VB.Net作为我的应用程序的语言。我想知道为什么有些实现不起作用。事实上,唯一有效的是Matthew Flaschen所描述的那个。但是它捕获了数字周围的符号以及数字本身。我想只捕获符号中包含的数字,并过滤掉符号本身。
答案 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+(?=\]>)
我没有测试这个正则表达式,但它应该非常接近你需要的。仔细检查所提供的链接。
希望这有帮助!