RegEx,小写字母和数字,精确长度为6 [重复]

krugob8w  于 2023-06-25  发布在  其他
关注(0)|答案(1)|浏览(118)

此问题已在此处有答案

What is a word boundary in regex?(13个回答)
24天前关闭
我有一个不同单词的列表,我想过滤所有ids,小写字母a-z和数字0-9,长度为6。
我还尝试了正则表达式[a-z0-9]{6}与not ^运算符的组合。
我的示例文本:abcdef abc 987 hello1 123456 abcde abcdefg 1234567 fedcba

  1. abcdef
  2. abc(太短)
  3. 987(太短)
    1.你好
  4. 123456
  5. abcde(太短)
  6. abcdefg
  7. 1234567
  8. fedcba
    1、4、5和9都可以,完美匹配
    2、3和6太短,所以不匹配,ok

问题:7和9是7个字符长,为什么它们匹配?我知道第一部分确实匹配,但目标将是忽略太长的组。

作为一个变通方案,我做了一个前步骤:请给予我所有长度为6的单词。但这太难看了。我可以用一个正则表达式来完成这两个步骤吗?
我的目标平台是一个ruby程序。但我认为这个问题与我的目标语言无关。我用https://regex101.com/试过了。

来自评论
1.我得到的评论设置锚^[a-z0-9]{6}$,但这不起作用,没有匹配。
1.这里是regex101@markalex-> https://regex101.com/r/7mTbjE/1的链接

pbgvytdp

pbgvytdp1#

将正则表达式改为\b[a-z0-9]{6}\b\b表示字边界。
如果你只需要检测整个字符串中的模式(而不是当它们被空格分隔时),那么你可以使用^[a-z0-9]{6}$^表示字符串的开头,$表示字符串的结尾)。
你原来的正则表达式不起作用,因为它只是检测到一行中有六个字母数字字符。这对于1234567和1234567都是如此。

相关问题