たとえば、↓の場合は
<a href="//oshiete.goo.ne.jp/">教えて!"goo"</a>
↓みたいに置換したいのです。「教えて!"goo"」の部分は<>に囲まれてないので置換対象外。
<a href="//oshiete.goo.ne.jp/">教えて!"goo"</a>
言語はjavaを使いたいです。正規表現を用いて置換したいのですが、私には難易度が高く・・・
腕に覚えのあるプログラマーの方、なにとぞご教授いただけませんでしょうか。
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
#3です。
テキトーに作ってみました。
import java.util.regex.*;
public class Test {
public static void main(String[] args) {
StringBuffer htmlValue = new StringBuffer();
htmlValue.append("<a href=\"//oshiete.goo.ne.jp/\">教えて!\"goo\"</a>");
htmlValue.append("\n");
htmlValue.append("<b style=\"display:none\">test\" test\"</b><a href=\"hogehoge\">h\"o\"g\"e\"</a>");
Pattern pattern = Pattern.compile("(?<=<).+?(?=>)");
Matcher matcher = pattern.matcher(htmlValue.toString());
StringBuffer valueBuf = new StringBuffer();
while (matcher.find()) {
String matchValue = matcher.group(0);
matchValue = matchValue.replace("\"", """);
matcher.appendReplacement(valueBuf, matchValue);
}
matcher.appendTail(valueBuf);
System.out.println("実行前");
System.out.println(htmlValue.toString());
System.out.println("実行後");
System.out.println(valueBuf.toString());
}
}
実行前
<a href="//oshiete.goo.ne.jp/">教えて!"goo"</a>
<b style="display:none">test" test"</b><a href="hogehoge">h"o"g"e"</a>
実行後
<a href="//oshiete.goo.ne.jp/">教えて!"goo"</a>
<b style="display:none">test" test"</b><a href="hogehoge">h"o"g"e"</a>
この実装方法は、別にHTMLを解析しているわけではありません。
そのため、本来適切でないHTMLコードが含まれている場合、それ相応の動作をします。
No.3
- 回答日時:
(?<=<).+?(?=>)
これで取ってこれたやつのダブルクォーテーションを全部"に変換すれば。
【サンプル】
<a href="//oshiete.goo.ne.jp/">教えて!"goo"</a>
<b style="display:none">test" test"</b><a href="hogehoge">h"o"g"e"</a>
【結果】
a href="//oshiete.goo.ne.jp/"
/a
b style="display:none"
/b
a href="hogehoge"
/a
調べたいなら、
正規表現 肯定戻り読み
正規表現 肯定先読み
で検索してください。
エスケープなど、Javaならではのお作法があるかもしれませんので、そこは気を付けて。
参考程度にこんなサイト見つけました。
http://www.javadrive.jp/regex/lookahead/index3.h …
No.2
- 回答日時:
1. HTML パーサーでテキストを全て解析する
2. 解析結果をそのまま出力する
3. ただし要素属性の値のみ独自の変換を行う
パーサーは標準で備えていないので、別途ライブライを探してみてください。
この用途ならば、SAX 形式で処理できるのがオススメです。
No.1
- 回答日時:
正規表現じゃないとだめなのですか?
1文字取り出す
< ならフラグを立てる
> ならフラグを下す
フラグが立っていたら、 " を "e; に変換
でいいような。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- オープンソース csvデータのダブルクォーテーションで囲まれた文字内にあるカンマを削除したい 3 2022/09/02 15:17
- Access(アクセス) Accessで、『"A"以外の場合"--"に置き換える』という作業をしたいのですが、良い方法はありま 1 2022/06/07 19:30
- フリーソフト サクラエディタの正規表現(grep機能)の使い方 3 2022/06/22 10:29
- その他(コンピューター・テクノロジー) 正規表現の置換で一部の文字列をそのまま残したい 2 2022/05/03 19:19
- Visual Basic(VBA) VBA初心者です。 2 2022/10/10 11:52
- gooポイント gooポイントをdポイントに交換できない。 3 2022/04/22 20:39
- gooメール スマホ乗り換え gooIDが現在使っているスマホのキャリアメールアドレスですが、乗り換えた場合 その 2 2022/03/30 13:32
- Windows 10 Windowsのバッチファイルで正規表現の置換方法について… 4 2022/12/09 16:00
- その他(教育・科学・学問) 国語表現の問題です 「国語の勉強をする。」 を命令・倒置の形に書き換えなさいというものなのですが、分 3 2022/06/20 09:41
- Visual Basic(VBA) Excel VBA 教えてください。 VBA初心者です。 詳しい方がいましたら教えてください。 下記 3 2023/04/25 11:22
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
変数を動的に利用するには?
-
System.exit()の値を取得したい
-
中カッコ{}だけの記述について
-
NoSuchMethodErrorが解決できま...
-
java 素数判定について
-
Java プログラム public class ...
-
繰り返し
-
Javaでlog4jを使ってログ出力を...
-
randomで
-
Javaでデータベースの内容をGUI...
-
Java初心者です
-
プログラミングの問題です。大...
-
java iを1づつ増やすプログラ...
-
日本語が文字コードによっては...
-
C言語のポインターに関する警告
-
IF関数でEmpty値を設定する方法。
-
オブジェクトの中のプロパティ...
-
Java 入力した整数値の合計を、...
-
ORA-01858: 数値を指定する箇所...
-
実数からの小数部の取得
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
変数を動的に利用するには?
-
プログラミングの問題です。大...
-
中カッコ{}だけの記述について
-
System.exit()の値を取得したい
-
randomで
-
Javaでlog4jを使ってログ出力を...
-
ArrayList でスタックを
-
NoSuchMethodErrorが解決できま...
-
元旦からの経過日数を求めたい
-
javaのプログラミングで作るRPG...
-
JSP/Servletのパラメータの受け...
-
インタフェイス実装と抽象クラ...
-
コンストラクタの引数の中のnew?
-
日本語が文字コードによっては...
-
初心者なので教えてほしいです。
-
GetterとSetterをやったのに。
-
JAVAで「Yahoo Japan!」に接続
-
Listデータを重復せずにSetに格...
-
日付の比較をしたいのですが・...
-
Socketの接続のタイムアウトを...
おすすめ情報