我需要编写检查以下单词的正则表达式:必须以字母开头,可能包含{3,16}个数字和\或字母。
我尝试了以下正则表达式\b[A-Za-z]+[A-Za-z0-9]*{3,16}\b
,但是我收到错误。
有什么问题?
答案 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']