2016-12-03 125 views
0

我想构建一个正则表达式,它将从字符串中提取数字。模式是特殊字符之间的数字的正则表达式

">number<" 

现在这个数字可以有小数或不是。 我去:

"[^\d]+" 

这确实提取的数字,但由于小数的,有时工作不好。有任何想法吗?

+0

欢迎来到StackOverflow。这个类似的问题是否有任何帮助? http://stackoverflow.com/questions/308122/simple-regular-expression-for-a-decimal-with-a-precision-of-2 –

回答

0
>((\-|\+)?[0-9]+(\.[0-9]+)?)< 

解释:

  • (\-|\+)?可选符号:-+
  • [0-9]+ - 数字
  • (\.[0-9]+)?非空序列 - 可选序列开始以一个点,接着非空序列的数字
  • ><在开始时和在(不在匹配组中)

在第一个匹配组中,您将获得您的号码。

Example here

+0

'1.'可能是浮点数的有效格式,具体取决于编写数字的语言。 –

0

试试这个(带引号复制):

">[0-9]+(\.[0-9]+)?<" 
+1

你需要逃避的点。 – Maroun

0

一个简单的正则表达式,其处理整数,浮点和负数:

>([\+\-]?\d+\.?\d*)< 

数量是组1

如果您可以使用正面搜索结果,则该正则表达式仅匹配><之间的一个数字,而不是其他任何值:

(?<=>)[\+\-]?\d+\.?\d*(?=<) 

Here在行动中。

+1

我认为你已经为负数加了'-',但它也可以匹配例如'> - 4-4-4 ---.-..- .. - ..-.- .- < '... – Adam

+0

垃圾进入 - >垃圾出来:D。但你说得对,我会更新答案。 –

相关问题