求个匹配正则? 多个字符串 返回每个匹配的位置
#include <Array.au3>$str='1234567②123个123们123①erereer'
$inc='①|②|的'
$aA=StringRegExp($str, $inc, 1)
msgbox(0,'',@Extended )
这样 只能得到 第一个'②' 的位置
我想 返回 数组 , $str里面 全部匹配$inc的位置.
求助
该怎么效率得到?
参考StringRegExp第四个参数offset
#include <Array.au3>
$str = '1234567②123个123们123①erereer'
$inc = '①|②|的'
Local $aFound
If StringRegExp($str, $inc) Then
Local $nOffset = 1, $ext
While 1
$Res = StringRegExp($str, $inc, 1, $nOffset)
If Not @error Then
$nOffset = @extended
_ArrayAdd($aFound, $nOffset)
Else
ExitLoop
EndIf
WEnd
EndIf
_ArrayDelete($aFound, 0)
_ArrayDisplay($aFound)
tubaba 发表于 2022-2-9 10:27
参考StringRegExp第四个参数offset
#include
谢谢回复, 有没效率些的? 感觉这样 还不如用 StringInStr
#include <Array.au3>
Local $Res1
$str = "1234567,②,123,个,123,们,123,①,erereer"
Local $inc = "①|②|个"
Local $aDays = StringSplit($str, ",") ; 使用分隔符 "," 和默认标志值拆分字符串.
For $i = 1 To UBound($aDays) - 1
If StringRegExp($aDays[$i], '(?mi)^\h*(' & $inc & ")$") Then
$Res1 &= $aDays[$i] & @CRLF
EndIf
Next
MsgBox(0, "", $Res1)
Local $aRE = StringRegExp($Res1, '(?mi)^\h*(' & $inc & ")$", 3)
_ArrayDisplay($aRE, " 显示")
这个试下
$str='1234567②123个123们123①erereer'
$regex=ObjCreate("vbscript.regexp")
$regex.global=True
$regex.pattern='①|②|的'
For $match In $regex.execute($str)
ConsoleWrite($match.value&@tab&$match.firstindex+1&@tab&$match.length&@CRLF)
Next kevinch 发表于 2022-2-12 10:17
这个试下
这个挺新颖啊~ {:1_625:} afan 发表于 2022-2-12 12:44
这个挺新颖啊~
vbs的正则,vba里常用
页:
[1]