python - 带连字符的正则表达式单词

标签 python regex

我正在寻找一个正则表达式来匹配至少有一个数字、一个字母 (a-zA-Z) 和至少一个连字符的单词(其中没有空格)。总大小应在 4 到 40 之间。

例子:

你好,你 h9-11c 匹配 h9-11c

foo 79d-11c-afac bar 匹配 79d-11c-afac

foo d-c-afac bar 不匹配 - 没有数字

到目前为止我已经想出了这个:

\b(?=.*\d)(?=.*[a-zA-Z])(?=.*-).{4,40}\b

但不是只匹配一个词(有点贪心)

最佳答案

使用\S匹配非空白字符。

此外,\b 匹配字母数字字符的边界,但您已将单词定义为任何非空白字符。

(?<!\S)(?=\S*\d)(?=\S*[a-zA-Z])(?=\S*-)\S{4,40}(?!\S)

关于python - 带连字符的正则表达式单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20034394/

相关文章:

python - 如何在与主程序不同的线程中编写套接字服务器(使用gevent)?

python - 使用 python opencv 进行 Blob 检测

python - 使用 python 或命令行进行视频编辑

regex - 仅解析具有多个匹配的行中的第一个正则表达式匹配

regex - 在 Vim 中,如何交换 2 个不相邻的模式?

python - matplotlib 中的误差线显示在其他曲线上

javascript - 将多维数组组合成基于键的字典对象

java - 正则表达式分组

java - 在 Android 中使用正则表达式解析

javascript - 仅当字符串不以某些字符开头时才获取字符串吗?