找回密码
 加入
搜索
查看: 2429|回复: 9

[AU3基础] 求个正则

  [复制链接]
发表于 2013-4-21 22:31:57 | 显示全部楼层 |阅读模式
本帖最后由 Qokelate 于 2013-4-21 23:06 编辑

如何用正则取出最内层 %包围里面的内容?

例如

%ABC%  得到ABC

%123%ABC%%  得到ABC(获取最内层)
%123%ABC%456%  得到ABC(获取最内层)

%123%%%  最内层为空,所以结果也为空

对正则实在搞不懂啊,压力山大



解释一下关于最内层

以%123%ABC%456% 为例,

首先从首尾各去掉一个%  得到 123%ABC%456%     (首尾去掉%是指 最左边的%和最右边的%,不一定是起始或结束字符)

然后 类似的 再去掉首尾的%  得到 ABC

然后%不再对称,然后最内层就是ABC了
发表于 2013-4-21 22:36:33 | 显示全部楼层
这个..不太好实现。有点奇怪。
发表于 2013-4-21 22:38:04 | 显示全部楼层
莫名其妙的问题 回家想好怎么问问题再来问
你先告诉我
%123%ABC%456%789%里哪个叫最内层
发表于 2013-4-21 22:52:41 | 显示全部楼层
让哥来告诉你....
%ABC%  得到ABC

%123%ABC%%  得到ABC(获取最内层)
%123%ABC%456%  得到ABC(获取最内层)

%123%%%



去掉两边的%号.无视数直.最后剩下的%XXXXX%  其中XXXX就是你要的内层

评分

参与人数 1金钱 +30 收起 理由
Qokelate + 30 正是如此

查看全部评分

发表于 2013-4-21 22:59:34 | 显示全部楼层
这个..不太好实现。有点奇怪。
发表于 2013-4-21 23:15:05 | 显示全部楼层
菜鸟只会循环整…
Local $Str = '%123%ABC%456%'
Do
        $Str = StringRegExpReplace($str, '^[^%]*?%|%[^%]*?$', '')
Until @extended = 0
MsgBox(0, '', $Str)

评分

参与人数 1金钱 +30 收起 理由
Qokelate + 30 谢谢帮忙

查看全部评分

 楼主| 发表于 2013-4-21 23:19:44 | 显示全部楼层
回复 6# afan


   比我的不断搜索字符和对比的高明多了

   方法收下   3Q
发表于 2013-4-23 17:27:58 | 显示全部楼层
Local $Str = '%123%ABC%456%'
$Str = StringRegExpReplace($str, '.*?%([A-Z]+)%.*', '\1')
MsgBox (0, "Tips", $str)
只保留ABC
发表于 2013-4-23 20:11:51 | 显示全部楼层
Local $Str = '%123%%%'
$arr=StringSplit($Str,"%")
$Str=$arr[Round($arr[0]/2)]
MsgBox(0, '', $Str)
感觉不用正则,除非能使用平衡组功能

评分

参与人数 2金钱 +30 贡献 +2 收起 理由
afan + 2 学习了
Qokelate + 30 很棒的见解

查看全部评分

 楼主| 发表于 2013-4-23 22:48:05 | 显示全部楼层
回复 9# kevinch


    这思路不错,又学一招
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-16 06:55 , Processed in 0.091989 second(s), 29 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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