当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《带有"notcharacter"的正则表达式与预期不匹配》经验,为你挑选了1个好方法。

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

    line有3到256个字符,分别是az,0-9,dash或dot.

    这条线无法开始或结束 -

我想获得下一个输出:

aaa  -> good
aaaa -> good
-aaa -> bad
aaa- -> bad
---a -> bad

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

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

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

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

PS我使用python 3 re模块.



1> Manu..:

这个几乎是正确的: ^[^-][a-z0-9\-.]{3,256}[^-]$

[^-]开始和结束已经代表一个字符,所以你需要改变{3,256}{1,254}

此外,你可能只想要az,0-9和.在开始和结束(不只是任何东西,除了- ),所以完整的regex变为:

^[a-z0-9.][a-z0-9\-.]{1,254}[a-z0-9.]$

推荐阅读
kikokikolove
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有