4

4回以上繰り返される文字がない場合にパスワードに一致する正規表現を作成したいと思います。

文字または文字のグループが4回繰り返される場合に一致する正規表現を思いつきました:

(?:([a-zA-Z\d]{1,})\1\1\1)

文字列に繰り返しが含まれていない場合にのみ一致させる方法はありますか? 正規表現で提案されているアプローチを試して 、単語を含まない行に一致させましたか? 肯定的/否定的な先読みの組み合わせがうまくいくと思ったので。しかし、私はまだ実用的な例を見つけていません。

繰り返しとは、文字列内の任意の数の文字を意味します

例 - 一致しない

aaaaxbc

アバババ

x14aaaabc

例 - 一致する必要があります

アブカザズ

(a はここに 4 回ありますが、問題ありません。繰り返しパターンを除外したい)

4

2 に答える 2

0

Nota Bene: this solution doesn't answer exaactly to the question, it does too much relatively to the expressed need.

-----

In Python language:

import re

pat = '(?:(.)(?!.*?\\1.*?\\1.*?\\1.*\Z))+\Z'

regx = re.compile(pat)

for s in (':1*2-3=4@',
          ':1*1-3=4@5',
          ':1*1-1=4@5!6',
          ':1*1-1=1@',
          ':1*2-a=14#a~7&1{g}1'):
    m = regx.match(s)
    if m:
        print m.group()
    else:
        print '--No match--'

result

:1*2-3=4@
:1*1-3=4@5
:1*1-1=4@5!6
--No match--
--No match--

It will give a lot of work to the regex motor because the principle of the pattern is that for each character of the string it runs through, it must verify that the current character isn't found three other times in the remaining sequence of characters that follow the current character.
But it works, apparently.

于 2013-12-08T16:20:21.843 に答える