
' 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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Access(アクセス) Accessのテキストボックスの入力文字制限 1 2023/01/18 20:43
- PHP SQLとPHPの連結方法がわからないのでアドバイスお願い致します 1 2022/07/12 12:16
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/03 09:11
- PHP PHPの構文で間違えが分からない 5 2022/07/11 16:38
- Ameba(アメーバブログ) アメブロは、HTMLのタグの入力を許さないブログ・サイトですか? 1 2023/06/18 18:48
- ホームページ作成・プログラミング アメーバ・ブログは"HTMLタグ"を許可してないのですか? 2 2023/06/17 21:08
- HTML・CSS HTMLの・要素・属性・属性値 はプログラム言語の「変数」みたいに変更できますか? 5 2022/10/04 05:27
- Visual Basic(VBA) Excel VBA 教えてください。 VBA初心者です。 詳しい方がいましたら教えてください。 下記 3 2023/04/25 11:22
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
クリッカブルマップはネスケで...
-
強制ジャンプを中止したいです。
-
正規表現でタグの置換をしたい...
-
Nvuで作成したhtmlをコピペして...
-
URLの連続アクセス
-
Strutsでリンクを動的に生成したい
-
正規表現で複数行に渡る範囲を...
-
phpの正規表現でstyle="●●"を削...
-
[php][正規表現]タグ以外を削除...
-
コメントタグに挟まれた部分を...
-
自分でタグ打ちして作ったペー...
-
echoで画像を呼び出すことがで...
-
VBAのコマンドボタンの文字列の...
-
全角括弧と全角読点の間隔を狭...
-
ソースコードの1行が長いとき...
-
改行を読み飛ばす
-
文字の入力で横バー上段、中断...
-
テキストボックス行の桁数を制...
-
Excel関数「COUNTIF」で”文字”...
-
カンマの含まれる文字列の数値...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
htmlのソースからテーブルの値...
-
htmlタグ間の特定文字置換
-
Nvuで作成したhtmlをコピペして...
-
タグにはさまれている文字以外...
-
reuterの記事をbeautiful.soup....
-
強制ジャンプを中止したいです。
-
URLの連続アクセス
-
タグとクッキーって関係あるん...
-
wordpressでthe_content内の置換
-
cHTMLのタグはHDMLでは
-
PHP、正規表現で特定タグコード...
-
alt属性を残してタグを排除
-
eclipseより、タスク・タグの使...
-
array_sliceの使い方がわかりま...
-
タイトルタグの重複の減らし方
-
Strutsでリンクを動的に生成したい
-
xhtmlの最初の行に半角スペース...
-
html table のcaptionタグのseo...
-
preg_match_allで正規表現
-
MP3のコメントタグやSYLTの詳細
おすすめ情報