用于捕获端口号的正则表达式

时间:2018-01-05 09:55:14

标签: regex port

我需要一个正则表达式来捕捉以下情况:

  • 开头不能有逗号',123';
  • 一起不能有2个逗号'123 ,, 123';
  • 最后不能有逗号'123';
  • 对于范围端口不能有超过1个连字符'123-456-789',它应该只有'123-456';

到目前为止,我已经来了:

(^[0-9]+)(^(?!.*(,,)).*$|(([0-9]+\-[0-9]+,?)|([0-9]+,?))+)([0-9]$)

这没关系: 121,123-200,2323

这不行: ' '121,123-200' - '300' ,, '2323,' - '500','

提前致谢

2 个答案:

答案 0 :(得分:3)

表达你想要的东西可能更容易,而不是你不想要的东西: 那就是:

  • 数字或范围(X = TSNE(n_components=2, perplexity=2.0).fit_transform( data ) ),
  • 可能是逗号,后跟另一个数字/范围(\d+(?:-\d+)?)。

您可以使用^(\d+(?:-\d+)?(?:,\d+(?:-\d+)?)*)$

由于您提到OracleDB,您可能希望避免使用(?:,\d+(?:-\d+)?)*^([0-9]+(-[0-9]+)?(,[0-9]+(-[0-9]+)?)*)$

答案 1 :(得分:0)

我建议您使用以下正则表达式:

^((?:[0-9]+(?:-[0-9]+)?)(?:,[0-9]+(?:-[0-9]+)?)*)$

您可以访问this link进行测试。