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

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

新規登録して質問してみよう
ただいま回答率
85.48%
HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

2999閲覧

[正規表現]HTMLのstyle属性を含むタグを抜き出す

TEA

総合スコア65

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2016/05/02 06:41

HTMLの文字列からstyle属性を含むタグを抜きだそうと考えています。gtihubの方で以下のようなパターンを教えて頂いたのですが、見た目が複雑で完全に理解できておりません。

javascript

1// パターン1 2var sampleReg = /\<\s*([^\s\>]+)((?:[^\>]*\bid[ \t]*="([^"\\]*(?:\\.[^"\\]*)*)"|[^\>]*)[^\>]*)style="([^"\\]*(?:\\.[^"\\]*)*)"((?:[^\>]*\bid[ \t]*="([^"\\]*(?:\\.[^"\\]*)*)"|[^\>]*)[^\>]*\>)/g

特に上記の中でも、下記のコードの(?:\\.が何故必要なのか理解できていません。もしご存知の方がいらっしゃいましたら分かりやすく解説して頂けないでしょうか?何卒よろしくお願いいたします。

javascript

1// パターン1の後半の一部 2var sampleReg_part = /\bid[ \t]*="([^"\\]*(?:\\.[^"\\]*)*)"/g

なお、上記のコードはこのような意味だと認識しております。

  1. \bid区切り文字とidの文字列を含む
  2. [ \t]*文字列idの後ろに半角スペースやタブが0文字以上連続
  3. ="文字列="を含む
  4. [^"\\]*文字列"と\以外の文字0以上が連続
  5. (?:\\.\と改行以外の1文字 ←何故?
  6. [^"\\]* 4と同じ

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

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

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

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

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

guest

回答1

0

ベストアンサー

?:について

上記は後方参照の対象とせずにグループ化だけを行うために、始まりの'('のあとにつけるものです。
この()で囲まれたものは後方参照の対象になりません(つまりメモリに持ちません)

そういう意味で?:がついているのだと思います。

投稿2016/05/02 10:38

kentei_syunrai

総合スコア946

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

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

TEA

2016/05/06 01:17 編集

非キャプチャーグループについて教えていただきまして、ありがとうございます。もし差し支えなければ、もう一つ伺ってもよろしいでしょうか? 5. (?:\\. → 非キャプチャーグループの定義 と、 \と改行以外の1文字 `?:`の後に続く、バックスラッシュは、何故必要なのでしょうか? 一般的にHTMLのid属性 文字列にバックスラッシュが含まれるケースがあるのか、教えて頂けましたら幸いです(^^)
kentei_syunrai

2016/05/06 01:29

HTML4.01でのIDの仕様 ・半角英数字(a-z|A-Z|0-9)、ハイフン(-)、アンダースコア(_)、コロン(:)、ピリオド(.) ・値の最初の文字は半角英字(a-z|A-Z)であること。 しかし、HTML5では ・スペース文字(空白文字)の禁止を除く 以外の制限がなくなりました。 そのため、HTML5ではバックスラッシュが含まれるケースが考えられます。
TEA

2016/06/10 09:03

ご返事が遅くなりましたが、詳しく教えて頂きましてありがとうございました!HTML5ではそのような仕様変更があったのですね。大変勉強になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問