小编Whi*_*rue的帖子

带有"not character"的正则表达式与预期不匹配

我正在努力满足下一个限制:

  1. line有3到256个字符,分别是az,0-9,dash或dot.
  2. 这条线无法开始或结束 -

我想获得下一个输出:

aaa  -> good
aaaa -> good
-aaa -> bad
aaa- -> bad
---a -> bad
Run Code Online (Sandbox Code Playgroud)

有一些正则数据没有给出正确答案:1)^[^-][a-z0-9\-.]{3,256}[^-]$所有测试线都是坏的;

2)^[^-]+[a-z0-9\-.]{3,256}[^-]+$将前三行视为一个匹配的字符串,因为[^ - ]匹配新行我猜.

3)^[^-]?[a-z0-9\-.]{3,256}[^-]?$(?用于一个或零匹配的破折号)使所有测试线都很好

真相在哪里?我感觉它要么接近我的要么更复杂.

PS我使用python 3 re模块.

regex

4
推荐指数
1
解决办法
76
查看次数

标签 统计

regex ×1