3

次の単語をチェックする正規表現を作成する必要があります。文字で始まる必要があり、{3,16}の数字や文字を含めることができます。

次の正規表現を試しました\b[A-Za-z]+[A-Za-z0-9]*{3,16}\bが、エラーが発生します。なにが問題ですか?

4

3 に答える 3

3

あなたの問題は、あなたの2番目のキャラクタークラスが両方*を持っているということです、そしてそれは定量化するものが何もないこと{3,16}を意味します。{3,16}さらに、入力文字列は1文字で始まる必要があると述べていますが、これは。+を意味し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 に答える