こんにちは
XMLに変換してからパースするという方法はいかがでしょうか?
php
1$text = <<<TEXT
2ああああああああ
3(
4 いいいいいいいい
5 (
6
7 うううううううう
8 (
9 ええええええええ
10 )
11 )
12)
13
14おおおおおおおお
15
16かかかかかかかか
17(
18 きききききききき
19 (
20 くくくくくくくく
21 )
22)
23けけけけけけけけ
24ここここここここ
25TEXT;
26
27
28$text = str_replace('(', '<node>', $text);
29$text = str_replace(')', '</node>', $text);
30
31$xmlstr =
32 '<?xml version="1.0" encoding="UTF-8"?>' .
33 '<root>' .
34 $text .
35 '</root>';
36
37
38$doc = new SimpleXMLElement($xmlstr);
39
40$count = 0;
41foreach ($doc->xpath('/root/node') as $node) {
42 $count ++;
43 $str = $node->asXML();
44 $str = str_replace('<node>', '(', $str);
45 $str = str_replace('</node>', ')', $str);
46 echo $count . "個目 ==========\n";
47 echo $str . "\n";
48}
上記を実行すると、以下のような出力が得られます。
1個目 ==========
(
いいいいいいいい
(
うううううううう
(
ええええええええ
)
)
)
2個目 ==========
(
きききききききき
(
くくくくくくくく
)
)
補足
以下、参考までに補足します。
使用するプログラミング言語は異なりますが、二週間ほど前に、類似の質問がありました。
上記の質問に対する、私の回答 では所与の文字列からJSONを経由しましたが、このご質問では、XMLにして処理するのが手っ取り早いと思ったのでそのようにしました。ちなみに、そちらの回答の補足やコメントにも書きましたが、開くカッコと閉じるカッコがきちんと対応している文字列にマッチする正規表現を書けないことを、理屈として理解するためには、(上記回答のコメントでも書きましたが)、一度、以下のような本で学習されるとよいかと思います。
以上、参考になれば幸いです。