質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

Google Analytics API

Google Analytics APIは、アクセス解析機能が行える API(Application Programming Interface)です。

Q&A

解決済

1回答

803閲覧

【GAS】文字列の抜き取り方について

musyoku

総合スコア4

アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

Google Analytics API

Google Analytics APIは、アクセス解析機能が行える API(Application Programming Interface)です。

0グッド

0クリップ

投稿2022/11/07 01:50

編集2022/11/07 02:28

GAS(google apps script)を使用してます。ただアルゴリズムの問題の為どの言語でも構わないと思います。

以下のような<td></td>タグで囲まれた文字列があります。またこのタグの数は4個と決められています。この中のa,b,c,dの中身を順に抜き取りたいです。
例えば<td>を空白に置換後</td>を元にsplit(分割)しリストを順に取得が思い浮かびましたが、それだとデータ5個(5個目が空白)で微妙です。4つをスマートに取得するにはどうすれば良いですか?

str = '<td>a</td><td>b</td><td>c</td><td>d</td>'

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2022/11/07 01:52

> ただGASのタグない為 「Google Apps Script」タグがあります。
退会済みユーザー

退会済みユーザー

2022/11/07 02:02

質問と関係ないタグ C#, JAVA は外してください。自分のようなタグで見ている者にはノイズが増えて迷惑ですので。
musyoku

2022/11/07 02:30

Google Apps Scriptのタグを発見しました。タグの修正に合わせて本文も直しました。ご指摘ありがとうございます。
fana

2022/11/07 02:31

先頭側から愚直に調べていくのでは何か問題があるのですか? (それだと「スマート」と言えないということですか? もしそうであれば,【では「スマート」とは何か?】みたいな話になってしまいそうですが…?)
Zuishin

2022/11/07 03:00 編集

この程度なら正規表現で肯定的先読み後読みと最短一致を使えば配列に加工できますが、5 個目だけの話ならそれを無視するか削除すれば良いと思います。 最初の <td> と最後の </td> を削除して </td><td> で分割することもできるでしょう。
musyoku

2022/11/07 07:17

皆さん回答ありがとうございます。 >先頭側から愚直に調べていくのでは何か問題があるのですか? 問題はないです。他にどういう方法があるのか皆さんの考えを知りたかった次第です。 >xmlとして解析して取得する方法なら、下記が参考になりそう。 xmlを使う手法もあるんですね。手法として理解しておきます。 >この程度なら正規表現で肯定的先読み後読みと最短一致を使えば配列に加工できますが、5 個目だけの話ならそれを無視するか削除すれば良いと思います。 最初の <td> と最後の </td> を削除して </td><td> で分割することもできるでしょう 確かに正規表現も良いですね。5個目無視でも問題ないですか。</td><td>で分割するとリストが4つになるのでシンプルですね。 これらを元に文字列を加工したいと思います。コメントありがとうございました。
guest

回答1

0

ベストアンサー

「ご参考] C++/正規表現 で実装してみた

C++

1#include <iostream> 2#include <iterator> 3#include <regex> 4#include <string> 5 6int main() { 7 std::string s("<td>a</td><td>b</td><td>c</td><td>d</td>"); 8 std::regex re("<td>(.*?)</td>"); 9 10 for (std::sregex_iterator it(std::begin(s), std::end(s), re), end; it != end; ++it) { 11 std::cout << (*it)[1].str() << std::endl; 12 } 13}

投稿2022/11/07 07:03

episteme

総合スコア16612

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問