正则是排除逗号分开的整数列表的范围



我想编写一个匹配数字值列表(非范围)的正则态度,在逗号分隔列表中给出,允许范围。不允许空。

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

最新更新