reReplace

正規表現置換を行います。

構文
  1. UString = reReplace( str1, str2, Pattern, IgnoreCase, Global )
引数
str1必須
置換される文字列
str2必須
置換後の文字列
Pattern必須
置換する文字列のパターン
IgnoreCase(デフォルト:True)省略可
大文字・小文字を区別しない場合はTrue、区別する場合はFalse
Global(デフォルト:True)省略可
文字列全体を検索する場合はTrue、しない場合はFalse
戻り値
正規表現置換後の文字列

プログラム

UWSC
//////////////////////////////////////////////////
// 【引数】
//   str1 : 置換される文字列 
//   str2 : 置換後の文字列 
//   Pattern : 置換する文字列のパターン 
//   IgnoreCase : 大文字・小文字を区別しない場合はTrue、区別する場合はFalse 
//   Global : 文字列全体を検索する場合はTrue、しない場合はFalse 
// 【戻値】
//   正規表現置換後の文字列 
//////////////////////////////////////////////////
FUNCTION reReplace(str1, str2, Pattern, IgnoreCase = TRUE, Global = TRUE)
	DIM re = CREATEOLEOBJ("VBScript.RegExp")
	re.Pattern = Pattern
	re.IgnoreCase = IgnoreCase
	re.Global = Global
	RESULT = re.Replace(str1, str2)
FEND

携帯電話・PHSの番号を10桁から11桁に変換

FAQ for YAMAHA RT Series / Topic
UWSC
PRINT reReplace("010-123-4567", "090-$1$2-$3", "0([1-489])0-(\d{3})-(\d{4})")   // 携帯電話
PRINT reReplace("050-123-4567", "070-$1$2-$3", "0([56])0-(\d{3})-(\d{4})")   // PHS
結果
プレーンテキスト
090-1123-4567
070-5123-4567

日付の形式を"yyyy年mm月dd日"形式から"yyyy/mm/dd"形式にする

UWSC
PRINT reReplace("2021年06月04日", "$1/$2/$3", "(\d+)年(\d+)月(\d+)日")
結果
プレーンテキスト
2021/06/04

メールアドレスのユーザー名(@より左側)をアスタリスクで置換

UWSC
PRINT reReplace("info@example.com", "*****@$2", "([a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+)@([a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*)")
結果
プレーンテキスト
*****@example.com

関連記事

isDate (自作関数)
引数に指定した値が日付として認識できる場合はTrueを返します。認識できない場合はFalseを返します。
reExecute (自作関数)
正規表現 検索を行います。
reTest (自作関数)
マッチングを行い、マッチしたかどうかを真偽値で返します。