正则表达式匹配字符串中的数字

时间:2016-05-18 08:52:56

标签: regex string special-characters

我有以下字符串,我需要从中提取数字以及" - " s。

51 Will-Ratelle 6 5 11 - 1.5-5 - 1-0 - - - -

我正在使用下面的正则表达式来提取有效的数字

(\+|-)?\d+(?:\.\d+)?

但这只给我51,6,5,11,1.5,-5,1,-0

我想提取" - " s。

我尝试了很少的替代品,其中包括" - "在名称" Will-Ratelle",我想跳过。

对此有任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

您可以使用

[+-]?\d+(?:\.\d+)?|\B-\B

请参阅regex demo

<强>解释

  • [+-]?\d+(?:\.\d+)? - 使用或不包含-+符号匹配浮点值(\d+匹配1位数,(?:\.\d+)?匹配点后跟1 + sigits 1或0次(可选))
  • | - 或......
  • \B-\B - 一个独立的连字符,不在一个单词之后或之前(\B是一个非单词边界)。