首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要此字符串的正则表达式

需要此字符串的正则表达式
EN

Stack Overflow用户
提问于 2009-10-03 14:23:58
回答 3查看 187关注 0票数 0

我正在写一个小程序来做一些计算。

基本上输入如下:

代码语言:javascript
复制
-91 10 -4 5

数字可以有负号,也可以没有负号。它们之间也用空格隔开。我需要一个正则表达式来过滤每个数字,包括符号,如果有一个。

谢谢!

亚当

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-10-03 06:26:04

在PHP中:

代码语言:javascript
复制
$digit=explode(' ', $digitstring);
echo $digit[0]; // return -91

在PHP中,您不需要使用正则表达式。

在其他语言中也有类似库,例如.Net。

代码语言:javascript
复制
string.split(new char[]{' '});

下面是一个用ruby写的例子:

代码语言:javascript
复制
@m=@digitstring.split(' ')
@my=@m[0];  //-91
票数 4
EN

Stack Overflow用户

发布于 2009-10-03 06:42:03

代码语言:javascript
复制
(-?\d+)\s?

你必须匹配n次,并从你的匹配器那里得到第一组。

伪代码:

代码语言:javascript
复制
matcher = "-91 10 -4 5".match(/(-\d+)\s?/)
while(matcher.hasMatch()) aNumber = match.group(1);

没有正则表达式会更简单

代码语言:javascript
复制
for(x : "-91 10 -4 5".split()) parseInt(x);
票数 1
EN

Stack Overflow用户

发布于 2009-10-03 07:01:41

您可能需要:

代码语言:javascript
复制
(?<=\b)-?\d+(?=\b)

这意味着:

  • 匹配(但不捕获)单词边界(此case);
  • Optionally匹配中的空格或字符串开头并捕获连字符;
  • 匹配并捕获一个或多个数字;
  • 匹配但不捕获尾部单词边界(在本例中为空格或字符串结尾)。

上面的非捕获表达式是zero-width assertions,技术上分别是正后视和正前视。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1512974

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档