我有以下字符串,我需要从中提取数字以及" - " 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",我想跳过。
对此有任何帮助将不胜感激。
答案 0 :(得分:2)
您可以使用
[+-]?\d+(?:\.\d+)?|\B-\B
请参阅regex demo
<强>解释强>:
[+-]?\d+(?:\.\d+)?
- 使用或不包含-
或+
符号匹配浮点值(\d+
匹配1位数,(?:\.\d+)?
匹配点后跟1 + sigits 1或0次(可选))|
- 或...... \B-\B
- 一个独立的连字符,不在一个单词之后或之前(\B
是一个非单词边界)。