はじめての親子ハイキングに挑戦!! >>

Dreamweaverの検索および置換で正規表現を使用して、サイト内で使用されている<a>タグの中の「title=""」を削除したいです。どうぞよろしくお願いします。

例としては下記のような感じです。

【修正前】
<a title="ここは文字列が入っています" href="index.html" class="link">リンク文字</a>
【修正後】
<a href="index.html" class="link">リンク文字</a>

「title=""」の「””」に入っている文字列は同じ文字もありますが、基本的にすべて違います。
また、例では<a>タグの中に「href」「class」が入っていますが、リンク先が違ったり、class名が違ったり、「id」が入っていることもあります。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

どこまでのケースを想定するかに依りまずが、こんな感じでしょうか。



検索: (<a(?: +(?!title *=)[^ >]*)*) title *= *(?:"[^"]*"|'[^']*'|[\w.:-]*)
置換: $1

■対象
<a title="ここは文字列が入っています" href="index.html" class="link">
<a title='ここは文字列が入っています' href="index.html" class="link">
<a title = test href="index.html" class="link">
<a class="link" title="ここは文字列が入っています" href="index.html">

■対象外
<area title="ここは文字列が入っています" href="index.html" class="link">
<area class="link" title="ここは文字列が入っています" href="index.html">
<a class="<link>" title="ここは文字列が入っています" href="index.html">
<a class=' title="test"' title="ここは文字列が入っています" href="index.html">

■参考URL
http://w4ard.eplusx.net/translation/W3C/REC-xml- …
http://www.asahi-net.or.jp/~sd5a-ucd/rec-html401 …

本格的に対応すると複雑になるので多少妥協しました。対象外の <a> は妥協の産物です。
XML 1.0, HTML 4.01 に概ね準じていますが、対象外の class="<link>" なんかは違反なので考慮しなくていいかもしれません。
「この手の悪いコードがあるかもしれない」という前提で考慮したほうがベターではありますが。

class=' title="test"' は違反ではありませんが、通常見ない書き方なのでここはまあ妥協で。
http://w4ard.eplusx.net/translation/W3C/REC-xml- …
これ全部対応するのはさすがに骨が折れる…。

# Re: kouta-222さん
    • good
    • 0
この回答へのお礼

色々とご丁寧なご説明ありがとうございました。
試してみたところ、全て「title」が消えたみたいです!
大変助かりました(^^)ノシ

お礼日時:2013/11/12 11:02

(<a [^>]*) title="[^"]*" ([^>]*>)


$1 $2
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
こちらも試してみましたが、残ってしまったみたいです。
説明が足りない部分があったかもしれないです。

お礼日時:2013/11/12 11:00

Dreamweaverは知らないのだけど


http://tenderfeel.xsrv.jp/memo/70/
を参考にするとこんな感じ


検索
(<a[^>]*) ?title="[^"]+"(.*>)

置換
$1$2

どかしら?
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
試してみましたが、いくつか消えずに残ってしまったみたいです。

お礼日時:2013/11/12 10:59

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QPHPでタグ内からURLと文字を抜き出したい

PHP4.3で
$html_tag = '<a href="http://www.hogehoge.com/hogehoge/hoge/sample.html" class="hogehoge" title="hogehoge">りんく先名称</a>';
というような変数から
「http://www.hogehoge.com/hogehoge/hoge/sample.html」
のURLと
「りんく先名称」という<a>で囲まれた文字列を抜き出したいのです。

preg_matchを使っていろいろやってみたのですが、どうもうまくいきません。というか、正規表現がどのように書いていいのかわからないのですが・・・
そもそもpreg_matchを使わずとも簡単な方法があるのでしょうか?

大変恐れ入りますが、ご教授いただけませんでしょうか?

Aベストアンサー

この例をもとにして思いっきりはしょって書くと

<?
$html_tag = '<a href="http://www.hogehoge.com/hogehoge/hoge/sample.html" class="hogehoge" title="hogehoge">りんく先名称</a>';
preg_match("|<a href=\"(.*?)\".*?>(.*?)</a>|mis",$html_tag,$matches);
$url=$matches[1];
$text=$matches[2];
?>

QHTMLからimgのsrcのみを正規表現で抽出する

Webサイトから画像だけをダウンロードするツールをJavaの勉強がてら作成しており、HTML内に含まれた全てのimgタグのsrc部分のみを抽出したいと考えています。
現在、正規表現を使ってHTMLからimgタグのsrcを抽出し、srcの一覧を取得するようなメソッドを作成していますが、私の実力が及ばないばかりに上手く出来ずに困っております。

以下のようなHTMLが有った場合の例を挙げます。
<html>
<body>
<img src="hoge.jpeg">
<img src="./hoge.jpeg">
<img src="./fuga/hoge.jpeg">
<img src="../fuga/hoge.jpeg">
<img src="http://fuga/hoge.jpeg">
</body>
</html>

上記のHTMLがString型に格納されてますので、
作成した抽出用メソッドの引数に渡すと以下のようなString[]型の文字列を返す想定をしています。
[0]=hoge.jpeg
[1]=./hoge.jpeg
[2]=./fuga/hoge.jpeg
[3]=../fuga/hoge.jpeg
[4]=http://fuga/hoge.jpeg

しかしながら現在、以下のような結果となり、最後の1件しか取得できていない状況です。
[0]=http://fuga/hoge.jpeg

恐らく正規表現が正しくないせいだとは思いますが、どのようにすれば取得できるのか分からず困っています。
もしこの問題についての解決策をご存じの方がおりましたら、ご教示いただけましたら幸いです。
よろしくお願いします

以下、作成中のテストソースです。
//----------------------------------------------------
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Main {
public static void main(String[] args) {
String testHtml = "<html><body><img src=\"hoge.jpeg\"><img src=\"./hoge.jpeg\"><img src=\"./fuga/hoge.jpeg\"><img src=\"../fuga/hoge.jpeg\"><img src=\"http://fuga/hoge.jpeg\"></body></html>";
String[] res = extractImgSrc(testHtml);

// 結果表示
for (int i = 0; i < res.length; i++) {
System.out.println("res[" + i + "]=" + res[i]);
}
}

// imgタグのsrcからurlを抽出
public static String[] extractImgSrc(String html) {
List<String> result = new ArrayList<String>();
Pattern p = Pattern.compile("<\\s*img.*src\\s*=\\s*([\\\"'])?([^ \\\"']*)[^>]*>");
Matcher m = p.matcher(html);
while (m.find()) {
result.add(m.group(2));
}

return result.toArray(new String[result.size()]);
}
}

Webサイトから画像だけをダウンロードするツールをJavaの勉強がてら作成しており、HTML内に含まれた全てのimgタグのsrc部分のみを抽出したいと考えています。
現在、正規表現を使ってHTMLからimgタグのsrcを抽出し、srcの一覧を取得するようなメソッドを作成していますが、私の実力が及ばないばかりに上手く出来ずに困っております。

以下のようなHTMLが有った場合の例を挙げます。
<html>
<body>
<img src="hoge.jpeg">
<img src="./hoge.jpeg">
<img src="./fuga/hoge.jpeg">
<img src="../fuga/hoge.jpeg">
<i...続きを読む

Aベストアンサー

正規表現 /<\s*img.*src\s*=\s*(["'])?([^ "']*)[^>]*>/ ですが、
非常に危険な /.*/ という指定を含んでいます。

これは「可能な限り長く一致させる」挙動となるので、
例題の場合なら以下の範囲を纏めて拾ってしまいます。
<img(ここから) src="..."><img src="...">...<img (ここまで)src="ttp://fuga/hoge.jpeg">

なので
/.*/
ではなく
/[^>]*/
とすれば想定どおりの挙動となるでしょう。


余談ではありますが、
この種の処理を行うなら HTML パーサーを介して、
DOM なり XPath を使うことをオススメします。

Qの意味を教えてください。

Javascriptを見ていると
<a href="#" onClick="new_open();return false">
なる記述がありますが、
この<a href="#"
の部分の意味を教えてください。
<a herf まではわかるのですが、この#はどのようないみなのでしょうか?

Aベストアンサー

href="#" というのは「そのページの最上部へのリンク」という意味で、スクロールした場所から一番上に戻したい場合に使います。
ちなみに、同ページ内への # 指定でのリンクでは、ページは読み込まれずスクロールするだけです。

<a href="#" onClick="new_open();return false">
というのは、そのリンクがクリックされた時に new_open という関数を実行し、他の処理はするな、という意味です。
return false というのが、A タグ本来のジャンプ動作をキャンセルさせるためのもので、これを取ってしまうとページ最上部にジャンプしてしまいます。

このスクリプトを書いた人は onClick だけが必要だったのでしょうが、href がないとリンクの下線が出ないなどの不都合があるため、やむなく # を書いたのでしょう。

JavaScriptの内容を実行したいだけなら、
<a href="javascript:new_open()">
と書けば十分なのですが、一部のブラウザではこのタイプのリンクをクリックすると、アニメーションGIFが止まってしまうなどの弊害があるため、嫌う人もいるようです。

また、JavaScriptが有効でない環境の人は、質問に書かれたリンクをクリックしてもページ最上部に戻されるだけで、開くべきページの内容を見ることができません。
なので、
<a href="ページのURL" target="_blank" onClick="new_open(); return false">
とするなどして、非JavaScript環境にも対応した方が親切です。

長文失礼しました。

href="#" というのは「そのページの最上部へのリンク」という意味で、スクロールした場所から一番上に戻したい場合に使います。
ちなみに、同ページ内への # 指定でのリンクでは、ページは読み込まれずスクロールするだけです。

<a href="#" onClick="new_open();return false">
というのは、そのリンクがクリックされた時に new_open という関数を実行し、他の処理はするな、という意味です。
return false というのが、A タグ本来のジャンプ動作をキャンセルさせるためのもので、これを取ってしまうとペー...続きを読む

Q「ご連絡いたします」は敬語として正しい?

連絡するのは、自分なのだから、「ご」を付けるのは
おかしいのではないか、と思うのですが。
「ご連絡いたします。」「ご報告します。」
ていうのは正しい敬語なのでしょうか?

Aベストアンサー

「お(ご)~する(いたす)」は、自分側の動作をへりくだる謙譲語です。
「ご連絡致します」も「ご報告致します」も、正しいです。

文法上は参考URLをご覧ください。

参考URL:http://www.nihongokyoshi.co.jp/manbou_data/a5524170.html

Q正規表現で囲まれた部分の文字列

正規表現でダブルコーテーションで囲まれた部分の文字列
を検索したいのです。
\"([^\"])*\"
とりあえずこんな感じで検索はできるのですが
問題はダブルコーテーションで囲まれた部分の
エスケープ文字\の判定が上手くできません。
([^\"])
この部分でダブルコーテーション以外の文字列、
ただし\"は除くって感じにしたいのですがどうすれば良いでしょうか。
宜しくお願いします。

正規表現のエンジンはBREGEXP.DLLです。
http://www.hi-ho.ne.jp/babaq/bregexp.html

Aベストアンサー

([^\"])

(\\\"|[^\"])
としたらでどうでしょうか。

Q正規表現でHTMLタグの属性まで選んで抽出

現在、掲示板をPHPで作っています。
入力された文字列の無効化と許可タグの分別に正規表現を使いたいと考えております。

そこで、現状では、まずすべての < > を特殊文字に変換し、その後に、許可タグ(属性)のタグを < > にもどそうとしています。

たとえば、fontタグならcolorとsizeを許可しようとして、次のような正規表現を作ってみましたが、うまくいきません。

/&lt;font((( )*(color=)[\"\']?.{1,7}[\"\']?)|(( )*(size=)[\"\']?.{1,2}[\"\']?))*&gt;/i

正規表現はまだ勉強し始めたところで、おかしなところだらけだと思いますが、何かヒントだけでもいただけたらと思います。

どうぞよろしくお願いします。

Aベストアンサー

$extention[] = "/&lt;(font(?:(?: color=[\"\']?(?:&quot;)?[#0-9a-z]{1,20}[\"\']?(?:&quot;)?)?|(?: size=[\"\']?(?:&quot;)?[\d]{1,2}[\"\']?(?:&quot;)?)?)*)&gt;/i";
$extention[] = "#&lt;(/font)&gt;#i";

foreach($extention as $ext){
$tag = preg_replace($ext,"<$1>",$tag);
}

こんなのはどうでしょうか。
多分" や 'が&quot;になってるんじゃないかな?と思います。
勘ですが。

Qの中では折り返さないにするには

どうしたらいいのでしょうか?



<table><tr><td>
<span><input type="checkbox" name="goo[]" value="aaaa "/>aaaa</span>
<span><input type="checkbox" name="goo[]"
・・・・・・・・・・・・・・・・
<span><input type="checkbox" name="goo[]" value="zzzz "/>zzzz</span>
</td></tr></table>

において
<td>~</td>
の内部のデータは折り返されますが
折り返す際に<span>~</span>の途中では折り返されないようにするにはどうしたらいいのでしょう?

Aベストアンサー

実際に実験していないのでうまくいくかは判りませんが
CSS2にwhite-spaceプロパティというものがあるようです

http://hp.vector.co.jp/authors/VA022006/css/text.html#white-space

#ただ検索の途中で
http://cssbug.at.infoseek.co.jp/detail/winie/b047.html
なんてものを見つけたり(汗

QJavaScriptde途中で、「exit」するには?

function kensaku(){
s_data = document.kaiin_form.input_name.value;

if(!s_data){ alert("キーワードを入れて下さい!"); }

if(s_data != dumy){ ...... }
for(i=st_no;i<=n;i++){
......省略.................;
.......省略................}
}

----------------------------------
3行目で表示されたアラートをOKで閉じても、4行目以下が実行されてしまいます。
3行目でexitするにはどうすれば良いでしょうか?

Aベストアンサー

>関数(kensaku())からは抜けられませんでした。
そうですね、勘違いしていました、f(^^;
すみません。
if(!s_data){
alert("キーワードを入れて下さい!");
return;
}
ですね。

Q正規表現で複数行に渡る範囲を取り出す

<html>

<div></div>

<div class="content">
<b>内容<b/><br />
<img src="#" />
<p>ほげほげほげほげ</p>
</div>

<div></div>

</html>

上のようなHTMLがあるとします。<div>の前後にもhtmlは書かれています。
そこから正規表現で<div class="content">~~~</div>の中身を取り出したいのですが、できません。
言語はPHPで、

/<div class=\"content\">.*<\/div>/
と書いてみたんですが、改行などがありうまくいきませんでした。

どのようにに記述すればうまくいくんでしょうか。

Aベストアンサー

> preg_match(/<div class=\"content\">.*<\/div>/s),$target);
> と書いて、divの中身を取り出すことはできたのですが、
> <div class="content">の対の</div>ではなく、html文中にある一番最後の</div>が対象になってしまいました。
* だと最長一致なので
代わりに最短一致の *? を使ってみてはどうでしょう。

(/<div class=\"content\">.*?<\/div>/s

Q比率の計算

比率の計算方法を教えて頂きたいのですが、例えば・・・男女の比率を6対4として、6が50人だった場合、4は何人になるのでしょうか?
出来れば比率自体の簡単な計算式も教えて頂ければ嬉しいです。

Aベストアンサー

要するに
50×4/6
をすればいいのです。

4は6より小さい。求めてる方が比べてるほうより大きいか小さいかを考えて、大きいなら大きいほうを分子に、小さいほうを分母にかけてしまえばいいのです。
今回なら50×6/4にしたら75になって女のほうが多くなってしまいますよね。それはおかしい。そしたら「逆だっ」て気付いて50×4/6にするのです。


人気Q&Aランキング