3

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

我尝试了以下正则表达式\b[A-Za-z]+[A-Za-z0-9]*{3,16}\b,但出现错误。怎么了?

4

3 回答 3

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
于 2012-05-02T08:03:53.010 回答
3

由于*. 删除它以获得有效的正则表达式:

\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}

于 2012-05-02T08:12:25.750 回答
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']
于 2012-05-02T08:28:51.043 回答