我想编写一个匹配数字值列表(非范围)的正则态度,在逗号分隔列表中给出,允许范围。不允许空。
for ex:列表:1,5-10,20,30,40,50-60
所需的输出:
1,20,30,40
我正在尝试以下方面:( d )(?!((( d ) - ( d ))),上面有一些变量。未来的否定似乎只是否定了第一个角色,而不是整个小组。
任何帮助将不胜感激。提前致谢。
您可以尝试以下等级以解决您的问题:
(?<!-)([1-9][0-9]*)((?=,)|$)
(?<!-) - Negative lookbehind which checks `-` not preceding number
([1-9][0-9]*) - getting number
((?=,)|$) - Or with Positive lookahead and end of input
- Positive lookahead checks `,` is follwed by number
- $ checks end of input
您需要使用否定的look-behind 和阳性look-head-head sostertion
(?<!-|d)d+(?=,|$)
详细信息
-
(?<!-|d)
look-behind要检查之前不在-
或digit
-
d+
匹配任何数字的实例 -
(?=,|$)
,
或弦乐末端
参见 REGEX DEMO