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)/