3

次の形式の文字列パターンを検索しています。

XXXAXXX 
# exactly 3 Xs, followed by a non-X, followed by 3Xs

すべての X は同じ文字でなければならず、A は X であってはなりません。

注: X と As を明示的に検索しているわけではありません。一般的にこの文字パターンを見つける必要があるだけです。

正規表現を使用してこれを構築することは可能ですか? それが問題になる場合は、Pythonで検索を実装します。

前もって感謝します!-CS

アップデート:

Pythonでの@rohit-jainの回答

x = re.search(r"(\w)\1{2}(?:(?!\1)\w)\1{3}", data_str)

Pythonでの@jerryの答え

x = re.search(r"(.)\1{2}(?!\1).\1{3}", data_str)
4

2 に答える 2

9

これを試すことができます:

(\w)\1{2}(?!\1)\w\1{3}

別れる:

(\w)        # Match a word character and capture in group 1
\1{2}       # Match group 1 twice, to make the same character thrice - `XXX`
(?!\1)      # Make sure the character in group 1 is not ahead. (X is not ahead)
\w          # Then match a word character. This is `A` 
\1{3}       # Match the group 1 thrice - XXX
于 2013-08-28T16:45:59.397 に答える
4

おそらく次の正規表現を使用できます。

(.)\1{2}(?!\1).\1{3}

最初のドットは任意の文字に一致し、それを 2 回コールバックし、否定先読みを使用してキャプチャされた文字が先にないことを確認し、別のドットを使用してもう一度任意の文字を受け入れ、その後 3 回のコールバックを行います。

于 2013-08-28T16:47:18.667 に答える