どのように私は、シーケンスはPythonの正規表現で別のシーケンス内の文字の同じ量を持っている場合にのみ、文字の特定の順序が一致していますか?

ホワイトYisom:

それぞれユニークなキャラクターが時代の同じ量を発生するかどうかを確認する方法はありますか?ソリーは、正規表現言語を使用するか、私は有効な一致を検索するために使用正規表現とstr.countがありますか?

これは、私は結果があることを期待していものです。

xy     -> valid
xxyy   -> valid
xxxyyy -> valid
xyy    -> not valid
xxy    -> not valid

私はのような何かを行うことができます知っています:

matches = re.match(r"^x+y+$", myTestStr)

しかし、私は「X」「Y」のトークン「+」と同じになるのトークン「+」を持っている方法はありますか?私はまた、グループで作業しようとしましたが、どちらかそこには運がなかったです。

述語:

あなたはこのために再帰を使用することができますが、それは仕事のためのベストプラクティスではありません正直に言うと。正規表現は、再帰的であることを意味しません。そしてrecursiion、私の知る限りのpythonモジュールの再スタンダールにinsludedされていない覚えています。私はあなたが必要だと思うregex、モジュールを

空の場合は、許可する必要があります。

\b(x(?1)y|)\b

空の文字列が許されるべきではない場合

\b(x(?1)y|(?<=x)(?=y))\b

デモhttps://regex101.com/r/x0McMc/3

あなたは、文字列の最大固定長を持っている場合にも、この(例では、最大長さ4)を行うことができます:

\b(x{1}y{1}|x{2}y{2}|x{3}y{3}|x{4}y{4})\b

https://regex101.com/r/vMl8vv/2

これは醜いと長さが大きい場合、大規模な正規表現になります。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=285037&siteId=1