如何编写正则表达式,检查单词是否以字母开头并包含{3,6}个数字和字母?

时间:2012-05-02 07:59:52

标签: regex

我需要编写检查以下单词的正则表达式:必须以字母开头,可能包含{3,16}个数字和\或字母。

我尝试了以下正则表达式\b[A-Za-z]+[A-Za-z0-9]*{3,16}\b,但是我收到错误。 有什么问题?

3 个答案:

答案 0 :(得分:3)

你的问题是第二个角色类同时包含*{3,16},这意味着{3,16}无法量化。另外,您声明输入字符串必须以一个字母开头,但+表示1..many。我想你想要:

\b                  // boundary
[A-Za-z]            // single character
[A-Za-z0-9]{2,15}   // A further 2-15 alpha numerics
\b                  // boundary

答案 1 :(得分:2)

由于*,您收到错误。删除它以获得有效的正则表达式:

\b[A-Za-z]+[A-Za-z0-9]{3,16}\b

然而,这个正则表达式并不是你想要的,这是:

\b[A-Za-z][A-Za-z0-9]{2,15}\b

您需要{2,15}(而不是{3,16}),因为{3,16}

中的一个是第一个字符

答案 2 :(得分:0)

一些示例Python代码:

subject = """
This is som3 s@mpl3 text.

One possible sixteen letter word is abstractednesses. 2012 is not
a word as it does not contain any alphabetic charat3rs.

Unfortunately conventionalizations contains 20 characters.
"""

import re
words = re.compile('((?<=\s)[A-Za-z]\w{2,15})\W', re.M)
res = words.findall(subject)

# res is:
# ['This', 'som3', 'text', 'possible', 'sixteen', 'letter', 'word', 
#  'abstractednesses', 'word', 'does', 'contain', 'alphabetic', 
#  'charat3rs', 'Unfortunately', 'contains', 'characters']