3.変数設定 変更可能範囲外正規表現編

解説範囲は以下の通り


 #正規表現

 $bSctRgx='^§ '

 $sSctRgx='^ § '

 $ttlRgx='^( )*[0-9]+\. '

 $mkjRgx='^【目次】'

 $cntntRgx='^【本文([0-9]+行)】'

 $rpRgx = '^(§ | § |( )*[0-9]+\. )'



……正規表現地獄だな。


まず、


$mkjRgx='^【目次】'


は「1.目次格納」で使います。

正規表現としては「行頭に(^)【目次】という文字列がくる」というものになります。

というのも、about.txtの内容ってキャッチコピーとかキャプション次第で変わるんですが、目次は一番最後に「【目次】」という見出しが始まって以降、見出しとエピソードが順番に最後まで並んでるんですね。

ということは、必然、目次の見出しが分かれば、それ以降の行をファイルの最後まで格納すれば、自然と目次が格納できるって寸法です。その行を割り出すための正規表現。



$bSctRgx='^§ '

$sSctRgx='^ § '

$ttlRgx='^( )*[0-9]+\. '


この3つは「3-2.見出し出力」における判定で使います。

上から順に、about.txtにおける大見出しの正規表現、小見出しの正規表現、エピソードタイトルの正規表現です。

前の目次のとこの説明の通り、「^」は行頭を指します。

なので、大見出しは「行頭に(^)§」、小見出しは「行頭に(^)半角スペース2つと§」、エピソードタイトルは「行頭に(^)半角スペース×2の0回以上の繰り返し(「( )*」)と0〜9の1回以上の繰り返し(「[0-9]+」)にピリオド(「\.」正規表現ではピリオドに意味があるので単なるピリオドを示すために\を直前に入れる)」となっています。


$cntntRgx='^【本文([0-9]+行)】'


これはエピソードの本文出力時に、本文開始位置を取得するための正規表現。

「行頭に(^)”【本文(”の後に0~9の数字の一回以上の繰り返しがあってから、”行)】”と続く文」を表します。


$rpRgx = '^(§ | § |( )*[0-9]+\. )'


最後のこれは「3-2.見出し出力」の時に不要な内容を削除するための置換対象文字列指定(正規表現)です。

結果、今までの合わせ技みたいになっている。

「行頭に(「^」)次のグループ(最初のカッコの範囲)のどれか(カッコ内の「|」がorの意味)に合致」したら置換って形で使います。

  • Xで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る