正規表現で、縦中横+文字スタイルの複合的な処理

[7009]正規表現で、縦中横+文字スタイルの複合的な処理 | 投稿者:トド | 投稿日:2012/07/27(Fri) 11:01:02
よろしくお願いします。下記リンク先で一度質問させていただきました者です。
http://www2.rocketbbs.com/11/bbs.cgi?id=thats&mode=pickup&no=6599
今回の質問はその続編になります。

縦組みの文章中、このような文字スタイルを予め定義します。

a:全角カッコで囲まれた文字列(曜日やカッコ株など)=水平比率80%
b:2文字の半角ローマ字=水平比率90%
c:2桁の半角数字=水平比率100%
d:3桁の半角数字=水平比率85%
e:4桁の半角数字=水平比率75%
(a~eはいずれも自動で縦中横に)

縦組で4桁の数字を半角させることの是非はひとまず置いといてください...
前回の質問の通り、

   17
   日
(土)AM10
   時

は相変わらずでチマチマと「結合なし」を手動で挿入してるのですが、
その時から発生していた別の問題があります。
それは、「結合なし」を施して、

 17
 日
(土)
 AM
 10
 時

になったとしても、AMと10それぞれが分離(独立)されてない半角4文字として認識された上に、
eの水平比率75%が適用されてしまうことです。
本来ならAMはb、10はcを適用して欲しいところなのですが。

単純に、私の正規表現の書き方がマズいのだと思ってます。
よろしければ、添削していただけませんでしょうか?以下に書き出します。

a:[(][月火水木金土日祝株代][)]~j
b:(?<![\x{0041}-{007A},\.])[\x{0041}-{007A}\.]{2}(?![\x{0041}-{007A},\.])
c:(?<![\x{0030}-{0039},\.])[\x{0030}-{0039}\.]{2}(?![\x{0030}-{0039},\.])
d:(?<![\x{0030}-{0039},\.])[\x{0030}-{0039}\.]{3}(?![\x{0030}-{0039},\.])
e:(?<![\x{0030}-{0039},\.])[\x{0030}-{0039}\.]{4}(?![\x{0030}-{0039},\.])

実はAMと10(bとc)の問題だけではなく当初はaも関係していましたが、
aの最後に~j(結合なしの特殊文字)を加えたところ、うまく別々に認識するようになったようです。
が、これだと半角ローマ字と繋がらない「○○工業(株)代表取締役」のような文章では当然無視されます。
aのままと、特殊文字のないa2のような2セットを用意すれば解消するのでしょうか動作が重くなりそうで懸念してます。

説明が拙くて分かりづらいかと思いますが、以上よろしくお願いします。
attached image
この記事の書き込み元へのリンク (コメントや質問などはこちらへどうぞ)

このページをシェア