-
DetaFormWebPageで取得したデータを意図した形に分割したいのですがその分割方法に行き詰っております。
取得したデータには空白文字(Space、Tab、改行)が複数存在しており、イメージとしては改行箇所を境に分割したい。
※1 Space基準だと分割件数が多すぎる(本来繋がっていてほしいところが分割される)
※2 Tab基準だと意図しない場合で分割されてしまう。
※3 改行基準だと※1よりレコード数が少し減る
しかし、意図する改行(偶数行)の他、意図しない改行箇所(奇数行)もある事がわかりました。
一旦分割して後で必要箇所のみ結合も考えましたが、その後の処理で指定したい変数(文字列)にできない事から分割する時点で意図する改行(偶数行)箇所のみを基準にテキストを分割したいと考えております。
何か良い案は無いでしょうか。
【補足】
分割したい場所(文字数)の特定は出来ました。
ループ処理を使って文末(文字数の大きい順)から遡っていく形で分割していけたらイメージ通りの結果が取得出来そうです。
ただ、やり方が見つかりません・・・。
他に案があれば上記のやり方以外でも全然OKです。
取得したDetaFormWebPageのデータを添付させて頂きます。
意図する形「アルファベット_空白(Space、Tab、改行)_数字」これで1レコードとしたいです。
-
「テキストの解析」にて「正規表現である」を利用して分割できます。
正規表現の詳細は以下など参考になると思いますので、ご覧ください。
https://ics.media/entry/221020/
今回であれば「アルファベット、空白(ない場合もある)、アルファベット、改行、数字」の塊で取れれば良いので、パターンとしては、
[A-Z]+ ?[A-Z]*(\R)\d+
でしょうか(もっとスマートな書き方があるかもしれません)
1. 『[A-Z]+』:アルファベット大文字が1文字以上繰り返す
2. 『 ?』:半角スペースが0か1文字
3. 『[A-Z]*』:アルファベット大文字が0文字以上(直前にスペースが有る場合には1文字以上続くので)
4. 『\R』:改行が1文字
5. 『\d+』:半角数字が1文字以上
このパターンを記載の上で「最初の出現箇所のみ」のチェックを外すと、パターンにマッチしたものが全てリスト形式で取得できます。
取得したリストをForEach等でループさせれば、CurrentItemで自由にテキストを処理できるかと思います。
正規表現は一見すると難解かもしれませんが、一つの手段として参考になればと思います。
- この返信は 1 年, 7 ヶ 月 前 で Re-T 変更されました。
-
ご回答、アドバイスありがとうございます。
やはりというべきか・・・正規表現しか無いですね。
正規表現調べながら作って試しましたが、素人にはハードルが高く挫折していました。
ご教示頂いた正規表現を使って試してみます。
解説もわかり易く理解できたと・・・思います。
引き続き正規表現勉強します。
ありがとうございました。
1 - 2 of 2 回答を表示