\\[()] | [^()] ) | \g )* \) ...">

正規表現の再帰

str = "a * ((bc)/(de) - f) * g"



reg = /(?

\(

(?:

(?>

\\[()]

|

[^()]

)

|

\g

)*

\)

)

\x



m=reg.match(str).to_a









このコードはcatの下で何をしますか。



このコードは、括弧が正しく配置されたネストされた式を検出します。



reg = /(?#名前付き式の始まり

\(#開き括弧

(?:#未記録グループ

(?>#独自の表現とのマッチング

\\ [()]#エスケープされたブラケット

| #どちらか

[^()]#括弧ではない

)#独自表現の終了

| #どちらか

\ g#括弧内のネストされたグループ(再帰呼び出し)

)*#忘れられないグループ

\)#閉じ括弧

)#式の終わり

\ x#



m = reg.match(str).to_a#["a((bc)/(de)-f)"。 「a((bc)/(de)-f)」]



左利きのリキュールが禁止されていることを忘れてはなりません



何ができるか。



str = "bbbaccc"

rel = /(? a|b\gc)/

re1.match(str).to_a








そしてそれは不可能です。

re2 = /(? a|\gc)/






All Articles