本ページには広告が含まれています。
目次
正規表現検索を行います。
- 構文
- Matches = reExecute( str, Pattern, IgnoreCase, Global )
- 引数
- str 必須
- 正規表現による検索の対象となる文字列
- Pattern 必須
- 正規表現で使用するパターンを設定
- IgnoreCase 省略可
- 大文字・小文字を区別しない場合はTrue、区別する場合はFalse
- Global 省略可
- 文字列全体を検索する場合はTrue、しない場合はFalse
- 戻り値
- 正規表現で検索した結果をMatchesコレクションとして返します。
プログラム
//////////////////////////////////////////////////
// 【引数】
// 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
一致したリストへのアクセス
FOR n = 0 TO Matches.Count - 1
PRINT Matches.Item(n).Value
NEXT
MatchesはCOMコレクション(Countプロパティで要素数を取得でき、Itemメソッドまたはプロパティで単一オブジェクトを取得できるもの)なので、FOR-IN-NEXTでもアクセスできます。
FOR Match IN Matches
PRINT Match.Value
NEXT
後方参照
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
プログラム実行例
サービスをすべて取得し、そのサービスをユーザーが開始・停止できるかどうかをブール値で返す
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
結果
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)
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"]のように指定します。
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
結果
接続時
未接続時
名前, Wi-Fi
説明, Intel(R) WiFi Link 5100 AGN
GUID, ********-****-****-****-************
物理アドレス, **:**:**:**:**:**
状態, 接続されました
SSID, ************-**
BSSID, **:**:**:**:**:**
ネットワークの種類, インフラストラクチャ
無線の種類, 802.11g
認証, WPA2-パーソナル
暗号, CCMP
接続モード, プロファイル
チャネル, 6
受信速度 (Mbps), 144
送信速度 (Mbps), 144
シグナル, 99%
プロファイル, ************-**
名前, Wi-Fi
説明, Intel(R) WiFi Link 5100 AGN
GUID, ********-****-****-****-************
物理アドレス, **:**:**:**:**:**
状態, 切断されました
無線の状態, ハードウェア オン
使用関数
設定したことのあるWi-Fi のプロファイル名(SSID)を取得
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とパスワードを取得
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
使用関数
参考文献
関連記事
- isDate関数 (自作関数)
- 引数に指定した値が日付として認識できる場合はTrueを返します。認識できない場合はFalseを返します。
- reReplace関数 (自作関数)
- 正規表現置換を行います。
- reTest関数 (自作関数)
- マッチングを行い、マッチしたかどうかを真偽値で返します。
- RegExp オブジェクト