找回密码
 加入
搜索
查看: 928|回复: 6

[AU3基础] 求个匹配正则? 多个字符串 返回每个匹配的位置

[复制链接]
发表于 2022-2-9 09:44:05 | 显示全部楼层 |阅读模式
#include <Array.au3>
$str='1234567②123个123们123①erereer'
$inc='①|②|的'
$aA=StringRegExp($str, $inc, 1)
msgbox(0,'',@Extended )

这样 只能得到 第一个'②' 的位置
我想 返回 数组   , $str里面 全部匹配$inc的位置.
求助
该怎么效率得到?


发表于 2022-2-9 10:27:18 | 显示全部楼层
参考StringRegExp第四个参数offset
#include <Array.au3>



$str = '1234567②123个123们123①erereer'

$inc = '①|②|的'
Local $aFound[1]

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)
 楼主| 发表于 2022-2-11 15:58:00 | 显示全部楼层
tubaba 发表于 2022-2-9 10:27
参考StringRegExp第四个参数offset
#include

谢谢回复, 有没效率些的? 感觉这样 还不如用 StringInStr
发表于 2022-2-12 09:57:05 | 显示全部楼层

#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, " 显示")


发表于 2022-2-12 10:17:58 | 显示全部楼层
这个试下
$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
发表于 2022-2-12 12:44:18 | 显示全部楼层

这个挺新颖啊~
发表于 2022-2-12 17:09:46 | 显示全部楼层
afan 发表于 2022-2-12 12:44
这个挺新颖啊~

vbs的正则,vba里常用
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-22 17:31 , Processed in 0.076449 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表