' VBSでのhtmlタグ要素名の置換
' htmlファイルのタグ名を小文字に統一するスクリプトを作りたいと思っています。
' で、以下のスクリプトを書きました。(問題は置換処理だけなので要点をシンプルに抜き出しました)
' 要素名をすべて記述するのではなく、「<[A-Z]+」等のように記述してヒットした結果を
' 小文字化するなどして置換をおこないたいと思っています。
' (将来的には属性名も対応したいと思っています)
' ずばりそのものの記述・代替案等を希望しています。
' よろしくお願いします。
' ※可能ならコードonlyで会話しましょう。
Option Explicit
Dim reg
Set reg = New RegExp
Function replace(bodyStr, beforeStr, afterStr)
reg.Pattern = beforeStr
reg.Global = True
replace = reg.Replace(bodyStr, afterStr)
End Function
Dim fileText
fileText = "<HTML>HTML</HTML>"
' 要素名の小文字化
' fileText = replace(fileText, "<HTML+", "<html")
' fileText = replace(fileText, "</HTML", "</html")
fileText = replace(fileText, "<[A-Z]+", LCase(RegExp.$1))
If fileText = "<html>HTML</html>" Then
MsgBox "期待通り!"
Else
MsgBox "これじゃダメだよ…orz:" + fileText
End If
No.1ベストアンサー
- 回答日時:
>問題は置換処理だけなので要点をシンプルに抜き出しました
とのことですが、お示しのコードを実行すると、「RegExp.$1」のところでエラーになってしまって、よく分かりませんので、下記の様になコードを書いて実行してみました。
ご参考になれば幸いです。
Option Explicit
Dim reg
Set reg = New RegExp
Dim beforeStr
beforeStr = InputBox("HTML タグを入力してください。", "htmlタグ要素名の置換")
With reg
.Pattern = "<[^ >]*"
.Global = True
End With
Dim fileText
Set fileText = reg.Execute(beforeStr)
Dim i, afterStr
afterStr = beforeStr
For i = 0 To fileText.Count - 1
afterStr = replace(afterStr, fileText(i), LCase(fileText(i)))
Next
MsgBox afterStr
>「RegExp.$1」のところでエラーになってしまって、
これはJScriptでの書き方です。
もし両方わかる人だったらすぐに伝わるだろうと思って書きました。
なんとなく意図を伝えようとしているだけでVB系のコードとしては
特に意味はありません。
教えていただいたコードでやりたいことは達成できました。
また、最初に私が考えていた方法では無理そうということもわかりました。
参考になりました。
ありがとうございました。
No.2
- 回答日時:
VBSの場合は RegExpのExecuteでMatchesコレクションを取得して処理します
Dim objMatchColl, objMatch
Set objMatchColl = Reg.Execute( fileText )
for each objMatch in objMatchColl
Reg.Replace(fileText, LCase( objMatch ) )
next
といった具合でしょう
入れ子になったタグを処理したいなら patternを "<([A-Z].*?)>(.*?)<\/\1>"などとして
if objMatchColl.Count > 1 then
' 再帰呼び出しで objMatchColl(1)を処理する
end if
といった処理が必要になってくるでしょう
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
XSSで、<a><pre>タグだけを有効...
-
正規表現でタグの置換をしたい...
-
XPathで、2クエリをまとめたい
-
htmlspecialcharsで特定のタグ...
-
reuterの記事をbeautiful.soup....
-
VBAのコマンドボタンの文字列の...
-
文字の入力で横バー上段、中断...
-
ソースコードの1行が長いとき...
-
エクセルのCOUNTIFが正しくカウ...
-
メッセージボックスで1025文字...
-
最終行の改行について
-
テキストファイルから改行コー...
-
VBAでCSVをExcelに取り込む時に...
-
エスケープ文字の復帰(¥r)と...
-
preg_matchでエラーが出ます。
-
JavaMail,本文中の改行について
-
fgetws関数で読み込んだUNICODE...
-
Excel関数「COUNTIF」で”文字”...
-
海外購入PCでLENB関数を機能さ...
-
【VBA】エクセルで最後の不要な...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
変数にHTMLを代入する場合
-
PHPに書く記述を教えてください
-
PHPの正規表現でHTMLタグの内容...
-
javascriptの正規表現でhtmlか...
-
ASP.NET(C#)とhtmlの#include
-
タグの中だけ改行を除去したい
-
正規表現で複数行に渡る範囲を...
-
htmlでflashを開く、画面サイズ...
-
横1行に2種類の画像を交互に5...
-
Strutsでリンクを動的に生成したい
-
正規表現で一発置換できるでし...
-
reuterの記事をbeautiful.soup....
-
phpの正規表現でstyle="●●"を削...
-
xmlとhtmlの違いについて
-
HTMLを組み込む場合。
-
alt属性を残してタグを排除
-
正規表現でタグの置換をしたい...
-
JSFタグのfタグとは
-
URLの結合
-
htmlのソースからテーブルの値...
おすすめ情報