reExecute関数

本ページには広告が含まれています。

正規表現検索を行います。

構文
  1. Matches = reExecute( str, Pattern, IgnoreCase, Global )
引数
str 必須
正規表現による検索の対象となる文字列
Pattern 必須
正規表現で使用するパターンを設定
IgnoreCase 省略可
大文字・小文字を区別しない場合はTrue、区別する場合はFalse
Global 省略可
文字列全体を検索する場合はTrue、しない場合はFalse
戻り値
正規表現で検索した結果をMatchesコレクションとして返します。

プログラム

UWSC
//////////////////////////////////////////////////
// 【引数】
//   str : 正規表現による検索の対象となる文字列 
//   Pattern : 正規表現で使用するパターンを設定 
//   IgnoreCase : 大文字・小文字を区別しない場合はTrue、区別する場合はFalse 
//   Global : 文字列全体を検索する場合はTrue、しない場合はFalse 
// 【戻り値】
//   正規表現で検索した結果をMatchesコレクションとして返します。 
//////////////////////////////////////////////////
FUNCTION reExecute(str, Pattern, IgnoreCase = TRUE, Global = TRUE)
	DIM re = CREATEOLEOBJ("VBScript.RegExp")
	re.Pattern = Pattern
	re.IgnoreCase = IgnoreCase
	re.Global = Global
	RESULT = re.Execute(str)
FEND

一致したリストへのアクセス

UWSC
FOR n = 0 TO Matches.Count - 1
PRINT Matches.Item(n).Value
NEXT

MatchesはCOMコレクション(Countプロパティで要素数を取得でき、Itemメソッドまたはプロパティで単一オブジェクトを取得できるもの)なので、FOR-IN-NEXTでもアクセスできます。

UWSC
FOR Match IN Matches
	PRINT Match.Value
NEXT

後方参照

UWSC
DIM Matches = reExecute("2024-07-29", "(\d{4})-(\d{2})-(\d{2})")

WITH Matches.Item(0)
	PRINT .SubMatches(0)
	PRINT .SubMatches(1)
	PRINT .SubMatches(2)
ENDWITH

名前付きキャプチャ

RegExpオブジェクトは名前付きキャプチャをサポートしていないため、PowerShellなど他のツールで代用します。

$regex = [regex]::new("(?<name>\w+)")
$matches = $regex.Match("example")
$matches.Groups["name"].Value

プログラム実行例

サービスをすべて取得し、そのサービスをユーザーが開始・停止できるかどうかをブール値で返す

UWSC
DIM Shell = CREATEOLEOBJ("Shell.Application")
DIM str = DOSCMD("sc query state=all | findstr /B <#DBL>SERVICE_NAME:<#DBL>")
DIM Matches = reExecute(str, "SERVICE_NAME: (.*?)\r\n")
DIM services[Matches.Count]

FOR n = 0 TO Matches.Count - 1
	DIM service = Matches.Item(n).SubMatches(0)
	services[n] = service + ":" + Shell.CanStartStopService(service)
NEXT

QSORT(services, QSRT_UNICODEA)

FOR service IN services
	PRINT service
NEXT

//////////////////////////////////////////////////
// 【引数】
//   str : 正規表現による検索の対象となる文字列 
//   Pattern : 正規表現で使用するパターンを設定 
//   IgnoreCase : 大文字・小文字を区別しない場合はTrue、区別する場合はFalse 
//   Global : 文字列全体を検索する場合はTrue、しない場合はFalse 
// 【戻り値】
//   正規表現で検索した結果をMatchesコレクションとして返します。 
//////////////////////////////////////////////////
FUNCTION reExecute(str, Pattern, IgnoreCase = TRUE, Global = TRUE)
	DIM re = CREATEOLEOBJ("VBScript.RegExp")
	re.Pattern = Pattern
	re.IgnoreCase = IgnoreCase
	re.Global = Global
	RESULT = re.Execute(str)
FEND
結果
CSV
AarSvc_6b8fd:                               False
AdobeARMservice:                            False
AJRouter:                                   False
ALG:                                        False
ALUpdateService:                            False
AppHostSvc:                                 False
AppIDSvc:                                   False
Appinfo:                                    False
AppReadiness:                               False
AppXSvc:                                    False
aspnet_state:                               False
AudioEndpointBuilder:                       False
Audiosrv:                                   False
autotimesvc:                                False
AxInstSV:                                   False
BcastDVRUserService_6b8fd:                  False
BDESVC:                                     False
BFE:                                        False
BITS:                                       False
BluetoothUserService_6b8fd:                 False
Bonjour Service:                            False
BootRacerServ:                              False
BrokerInfrastructure:                       False
BTAGService:                                False
BthAvctpSvc:                                False
bthserv:                                    False
camsvc:                                     False
CaptureService_6b8fd:                       False
cbdhsvc_6b8fd:                              False
CDPSvc:                                     False
CDPUserSvc_6b8fd:                           False
CertPropSvc:                                False
chromoting:                                 False
CLHNService:                                False
ClipSVC:                                    False
COMSysApp:                                  False
ConsentUxUserSvc_6b8fd:                     False
CoreMessagingRegistrar:                     False
cphs:                                       False
CredentialEnrollmentManagerUserSvc_6b8fd:   False
CryptSvc:                                   False
CypherGuard cguard Service 32bit Edition:   False
CypherGuard cguard Service 64bit Edition:   False
CypherGuard Info Service:                   False
dbupdate:                                   False
dbupdatem:                                  False
DbxSvc:                                     False
DcomLaunch:                                 False
dcsvc:                                      False
defragsvc:                                  False
DeviceAssociationBrokerSvc_6b8fd:           False
DeviceAssociationService:                   False
DeviceInstall:                              False
DevicePickerUserSvc_6b8fd:                  False
DevicesFlowUserSvc_6b8fd:                   False
DevQueryBroker:                             False
Dhcp:                                       False
diagnosticshub.standardcollector.service:   False
diagsvc:                                    False
DiagTrack:                                  False
DispBrokerDesktopSvc:                       False
DisplayEnhancementService:                  False
DmEnrollmentSvc:                            False
dmwappushservice:                           False
Dnscache:                                   False
DoSvc:                                      False
dot3svc:                                    False
DPS:                                        False
DSDFunctionKeyCtlService:                   False
DSDTabletControlService:                    False
DSDWirelessLEDCtlService:                   False
DsmSvc:                                     False
DsSvc:                                      False
DusmSvc:                                    False
dynabookSettingService:                     False
Eaphost:                                    False
edgeupdate:                                 False
edgeupdatem:                                False
EFS:                                        False
embeddedmode:                               False
EntAppSvc:                                  False
EventLog:                                   False
EventSystem:                                False
Everything:                                 False
Fax:                                        False
fdPHost:                                    False
FDResPub:                                   False
fhsvc:                                      False
FolderSize:                                 False
FontCache:                                  False
FontCache3.0.0.0:                           False
FrameServer:                                False
Freemake Improver:                          False
FreemakeVideoCapture:                       False
GoogleChromeElevationService:               False
GoogleIMEJaCacheService:                    False
gpsvc:                                      False
GraphicsPerfSvc:                            False
gupdate:                                    False
gupdatem:                                   False
hidserv:                                    False
HvHost:                                     False
icssvc:                                     False
IDriverT:                                   False
IKEEXT:                                     False
ImeDictUpdateService:                       False
InstallService:                             False
iphlpsvc:                                   False
IpxlatCfgSvc:                               False
KeyIso:                                     False
KtmRm:                                      False
LanmanServer:                               False
LanmanWorkstation:                          False
lfsvc:                                      False
LicenseManager:                             False
LLHDClient:                                 False
LLHDCloader:                                False
lltdsvc:                                    False
lmhosts:                                    False
LMS:                                        False
LSM:                                        False
LxpSvc:                                     False
MapsBroker:                                 False
McpManagementService:                       False
MessagingService_6b8fd:                     False
MicrosoftEdgeElevationService:              False
MixedRealityOpenXRSvc:                      False
MozillaMaintenance:                         False
mpssvc:                                     False
MSDTC:                                      False
MSiSCSI:                                    False
msiserver:                                  False
MSMQ:                                       False
MSSQL$SQLEXPRESS:                           False
MSSQLServerADHelper100:                     False
NaturalAuthentication:                      False
NcaSvc:                                     False
NcbService:                                 False
NcdAutoSetup:                               False
Netlogon:                                   False
Netman:                                     False
NetMsmqActivator:                           False
NetPipeActivator:                           False
netprofm:                                   False
NetSetupSvc:                                False
NetTcpActivator:                            False
NetTcpPortSharing:                          False
NgcCtnrSvc:                                 False
NgcSvc:                                     False
NielsenUpdate:                              True
NlaSvc:                                     False
nsi:                                        False
nurago InstallUpdate:                       False
nurago NetworkMeter:                        False
nurago Reporting Service:                   False
OneSyncSvc_6b8fd:                           False
ose64:                                      False
osppsvc:                                    False
p2pimsvc:                                   False
p2psvc:                                     False
PcaSvc:                                     False
perceptionsimulation:                       False
PerfHost:                                   False
PhoneSvc:                                   False
PimIndexMaintenanceSvc_6b8fd:               False
pla:                                        False
PlugPlay:                                   False
PNRPAutoReg:                                False
PNRPsvc:                                    False
PolicyAgent:                                False
Power:                                      False
PrintNotify:                                False
PrintWorkflowUserSvc_6b8fd:                 False
ProfSvc:                                    False
PushToInstall:                              False
QWAVE:                                      False
RasAuto:                                    False
RasMan:                                     False
RemoteAccess:                               False
RemoteRegistry:                             False
RetailDemo:                                 False
RmSvc:                                      False
RpcEptMapper:                               False
RpcLocator:                                 False
RpcSs:                                      False
SamSs:                                      False
SCardSvr:                                   False
ScDeviceEnum:                               False
Schedule:                                   False
SCPolicySvc:                                False
SDRSVC:                                     False
seclogon:                                   False
SecurityHealthService:                      False
SEMgrSvc:                                   False
SENS:                                       False
SensorDataService:                          False
SensorService:                              False
SensrSvc:                                   False
SessionEnv:                                 False
SgrmBroker:                                 False
SharedAccess:                               False
SharedRealitySvc:                           False
ShellHWDetection:                           False
shpamsvc:                                   False
smphost:                                    False
SmsRouter:                                  False
SNMPTRAP:                                   False
spectrum:                                   False
Spooler:                                    False
sppsvc:                                     False
SQLAgent$SQLEXPRESS:                        False
SQLBrowser:                                 False
SQLWriter:                                  False
SSDPSRV:                                    False
ssh-agent:                                  False
SstpSvc:                                    False
StateRepository:                            False
stisvc:                                     False
StorSvc:                                    False
svsvc:                                      False
swprv:                                      False
SynTPEnhService:                            False
SysMain:                                    False
SystemEventsBroker:                         False
SystemExplorerHelpService:                  False
TabletInputService:                         False
TapiSrv:                                    False
TermService:                                False
Themes:                                     False
TieringEngineService:                       False
TimeBrokerSvc:                              False
TMachInfo:                                  False
TODDSrv:                                    False
TokenBroker:                                False
TosCoSrv:                                   False
TOSHIBA HDD SSD Alert Service:              False
TPCHSrv:                                    False
TrkWks:                                     False
TroubleshootingSvc:                         False
TrustedInstaller:                           False
tzautoupdate:                               False
UdkUserSvc_6b8fd:                           False
uhssvc:                                     False
UmRdpService:                               False
UnistoreSvc_6b8fd:                          False
UNS:                                        False
upnphost:                                   False
UserDataSvc_6b8fd:                          False
UserManager:                                False
UsoSvc:                                     False
VacSvc:                                     False
VaultSvc:                                   False
vds:                                        False
vmicguestinterface:                         False
vmicheartbeat:                              False
vmickvpexchange:                            False
vmicrdv:                                    False
vmicshutdown:                               False
vmictimesync:                               False
vmicvmsession:                              False
vmicvss:                                    False
vncserver:                                  False
VSS:                                        False
VSStandardCollectorService150:              False
W32Time:                                    False
w3logsvc:                                   False
W3SVC:                                      False
WaaSMedicSvc:                               False
WalletService:                              False
WarpJITSvc:                                 False
WAS:                                        False
wbengine:                                   False
WbioSrvc:                                   False
Wcmsvc:                                     False
wcncsvc:                                    False
WdiServiceHost:                             False
WdiSystemHost:                              False
WdNisSvc:                                   False
WebClient:                                  False
Wecsvc:                                     False
WEPHOSTSVC:                                 False
wercplsupport:                              False
WerSvc:                                     False
WFDSConMgrSvc:                              False
WiaRpc:                                     False
WinDefend:                                  False
WinHttpAutoProxySvc:                        False
Winmgmt:                                    False
WinRM:                                      False
wisvc:                                      False
WlanSvc:                                    False
wlidsvc:                                    False
wlpasvc:                                    False
WManSvc:                                    False
wmiApSrv:                                   False
WMPNetworkSvc:                              False
workfolderssvc:                             False
WpcMonSvc:                                  False
WPDBusEnum:                                 False
WpnService:                                 False
WpnUserService_6b8fd:                       False
wscsvc:                                     False
WSearch:                                    False
wuauserv:                                   False
WwanSvc:                                    False
XblAuthManager:                             False
XblGameSave:                                False
XboxGipSvc:                                 False
XboxNetApiSvc:                              False
使用関数

指定期間に受信したメールからURLを抽出(Outlook)

UWSC
HASHTBL url = HASH_SORT

CONST olFolderInbox = 6

DIM Outlook = CREATEOLEOBJ("Outlook.Application")
DIM NameSpace = Outlook.GetNameSpace("MAPI")
DIM Folder = NameSpace.GetDefaultFolder(olFolderInbox)
DIM Items = Folder.Items

DIM start = "2021/01/01"
DIM end = "2021/01/07"

Items = Items.Restrict("[ReceivedTime] >= '" + start + "' AND [ReceivedTime] <= '" + end + "'")

DIM row = 1

FOR MailItem IN Items
	FUKIDASI(row + "/" + Items.Count)
	DIM Matches = reExecute(MailItem.Body, "https?://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?")
	FOR Match IN Matches
		url[Match.Value] = url[Match.Value] + 1
	NEXT
	row = row + 1
NEXT

FOR i = 0 TO LENGTH(url) - 1
	FUKIDASI(i + "/" + (LENGTH(url) - 1))
	PRINT url[i, HASH_KEY]
NEXT

//////////////////////////////////////////////////
// 【引数】
//   str : 正規表現による検索の対象となる文字列 
//   Pattern : 正規表現で使用するパターンを設定 
//   IgnoreCase : 大文字・小文字を区別しない場合はTrue、区別する場合はFalse 
//   Global : 文字列全体を検索する場合はTrue、しない場合はFalse 
// 【戻り値】
//   正規表現で検索した結果をMatchesコレクションとして返します。 
//////////////////////////////////////////////////
FUNCTION reExecute(str, Pattern, IgnoreCase = TRUE, Global = TRUE)
	DIM re = CREATEOLEOBJ("VBScript.RegExp")
	re.Pattern = Pattern
	re.IgnoreCase = IgnoreCase
	re.Global = Global
	RESULT = re.Execute(str)
FEND
使用関数
解説

接続中の無線LAN情報を取得

連想配列に代入した後にすべて出力していますが、必要な項目だけ取得する場合はLAN["SSID"]のように指定します。

UWSC
HASHTBL LAN

DIM str = DOSCMD("netsh wlan show interface")
DIM Matches = reExecute(str, "\s*?((?=\S).*?)\s*? : \s*?(.*?)\s*?\n")

FOR i = 0 TO Matches.Count - 1
	WITH Matches.Item(i)
		LAN[.SubMatches(0)] = .SubMatches(1)
	ENDWITH
NEXT

FOR i = 0 TO LENGTH(LAN) - 1
	PRINT LAN[i, HASH_KEY] + "," + LAN[i, HASH_VAL]
NEXT

//////////////////////////////////////////////////
// 【引数】
//   str : 正規表現による検索の対象となる文字列 
//   Pattern : 正規表現で使用するパターンを設定 
//   IgnoreCase : 大文字・小文字を区別しない場合はTrue、区別する場合はFalse 
//   Global : 文字列全体を検索する場合はTrue、しない場合はFalse 
// 【戻り値】
//   正規表現で検索した結果をMatchesコレクションとして返します。 
//////////////////////////////////////////////////
FUNCTION reExecute(str, Pattern, IgnoreCase = TRUE, Global = TRUE)
	DIM re = CREATEOLEOBJ("VBScript.RegExp")
	re.Pattern = Pattern
	re.IgnoreCase = IgnoreCase
	re.Global = Global
	RESULT = re.Execute(str)
FEND
結果
接続時
CSV
名前,                 Wi-Fi
説明,                 Intel(R) WiFi Link 5100 AGN
GUID,                 ********-****-****-****-************
物理アドレス,         **:**:**:**:**:** 
状態,                 接続されました
SSID,                 ************-**
BSSID,                **:**:**:**:**:**
ネットワークの種類,   インフラストラクチャ
無線の種類,           802.11g
認証,                 WPA2-パーソナル
暗号,                 CCMP
接続モード,           プロファイル
チャネル,             6
受信速度 (Mbps),      144
送信速度 (Mbps),      144
シグナル,             99%
プロファイル,         ************-**
未接続時
CSV
名前,           Wi-Fi
説明,           Intel(R) WiFi Link 5100 AGN
GUID,           ********-****-****-****-************
物理アドレス,   **:**:**:**:**:**
状態,           切断されました
無線の状態,     ハードウェア オン
使用関数

設定したことのあるWi-Fi のプロファイル名(SSID)を取得

UWSC
HASHTBL LAN

DIM str = DOSCMD("netsh wlan show profile")
DIM Matches = reExecute(str, "\s*? : (.*?)\n")

DIM array[-1]

FOR i = 0 TO Matches.Count - 1
	arrayPush(array, Matches.Item(i).SubMatches(0))
NEXT

FOR i = 0 TO UBound(array)
	PRINT array[i]
NEXT

//////////////////////////////////////////////////
// 【引数】
//   array : 要素を追加する配列(参照引数) 
//   values : 追加する要素をvalue1から指定 
// 【戻り値】
//   処理後の配列の要素の数 
//////////////////////////////////////////////////
FUNCTION arrayPush(var array[], value1 = EMPTY, value2 = EMPTY, value3 = EMPTY, value4 = EMPTY, value5 = EMPTY, value6 = EMPTY, value7 = EMPTY, value8 = EMPTY, value9 = EMPTY, value10 = EMPTY, value11 = EMPTY, value12 = EMPTY, value13 = EMPTY, value14 = EMPTY, value15 = EMPTY, value16 = EMPTY)
    DIM i = 1
    WHILE EVAL("value" + i) <> EMPTY
	  DIM res = RESIZE(array, UBound(array) + 1)
	  array[res] = EVAL("value" + i)
	  i = i + 1
	WEND
	RESULT = LENGTH(array)
FEND

//////////////////////////////////////////////////
// 【引数】
//   str : 正規表現による検索の対象となる文字列 
//   Pattern : 正規表現で使用するパターンを設定 
//   IgnoreCase : 大文字・小文字を区別しない場合はTrue、区別する場合はFalse 
//   Global : 文字列全体を検索する場合はTrue、しない場合はFalse 
// 【戻り値】
//   正規表現で検索した結果をMatchesコレクションとして返します。 
//////////////////////////////////////////////////
FUNCTION reExecute(str, Pattern, IgnoreCase = TRUE, Global = TRUE)
	DIM re = CREATEOLEOBJ("VBScript.RegExp")
	re.Pattern = Pattern
	re.IgnoreCase = IgnoreCase
	re.Global = Global
	RESULT = re.Execute(str)
FEND

//////////////////////////////////////////////////
// 【引数】
//   inputs : 繰り返す文字列 
//   multiplier : inputsを繰り返す回数 
// 【戻り値】
//   inputsをmultiplier回を繰り返した文字列を返します 
//////////////////////////////////////////////////
FUNCTION strRepeat(inputs, multiplier)
	DIM res = ""
	FOR n = 1 TO multiplier
		res = res + inputs
	NEXT
	RESULT = res
FEND

//////////////////////////////////////////////////
// 【引数】
//   arrayname : 上限値を求める配列の名前 
//   dimension : 返す次元を示す整数 
// 【戻り値】
//   配列の上限値 
//////////////////////////////////////////////////
FUNCTION UBound(arrayname[], dimension = 1)
	RESULT = EVAL("RESIZE(arrayname" + strRepeat("[0]", dimension - 1) + ")")
FEND
結果
プレーンテキスト
************-2G
aterm-******-g
Buffalo-G-****
auhome_******
aterm-******-g
FON_FREE_INTERNET
使用関数

接続したことあるWi-FiのSSIDとパスワードを取得

UWSC
DIM str = DOSCMD("netsh wlan show networks")
DIM Matches_SSID = reExecute(str, "SSID \d+ : (.*?)\r\n")

FOR n = 0 TO Matches_SSID.Count - 1
	DIM SSID = Matches_SSID.Item(n).SubMatches(0)
	str = DOSCMD("netsh wlan show profiles name=" + SSID + " key=clear")
	PRINT "SSID<#TAB><#TAB>" + SSID
	Matches_Pass = reExecute(str, "主要なコンテンツ       : (.*?)\r\n")
	IFB Matches_Pass.Count <> 0 THEN
		PRINT "パスワード<#TAB>" + Matches_Pass.Item(0).SubMatches(0)
	ELSE
		PRINT "パスワード<#TAB>"
	ENDIF
	PRINT "-----"
NEXT

//////////////////////////////////////////////////
// 【引数】
//   str : 正規表現による検索の対象となる文字列 
//   Pattern : 正規表現で使用するパターンを設定 
//   IgnoreCase : 大文字・小文字を区別しない場合はTrue、区別する場合はFalse 
//   Global : 文字列全体を検索する場合はTrue、しない場合はFalse 
// 【戻り値】
//   正規表現で検索した結果をMatchesコレクションとして返します。 
//////////////////////////////////////////////////
FUNCTION reExecute(str, Pattern, IgnoreCase = TRUE, Global = TRUE)
	DIM re = CREATEOLEOBJ("VBScript.RegExp")
	re.Pattern = Pattern
	re.IgnoreCase = IgnoreCase
	re.Global = Global
	RESULT = re.Execute(str)
FEND
使用関数

参考文献

  1. Rubular: a Ruby regular expression editor
  2. Regexper

関連記事

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