Qokelate 发表于 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了

lpxx 发表于 2013-4-21 22:36:33

这个..不太好实现。有点奇怪。

大绯狼 发表于 2013-4-21 22:38:04

莫名其妙的问题 回家想好怎么问问题再来问
你先告诉我
%123%ABC%456%789%里哪个叫最内层

mikezunya 发表于 2013-4-21 22:52:41

让哥来告诉你....
%ABC%得到ABC

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

%123%%%



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

zhenglei 发表于 2013-4-21 22:59:34

这个..不太好实现。有点奇怪。

afan 发表于 2013-4-21 23:15:05

菜鸟只会循环整…Local $Str = '%123%ABC%456%'
Do
        $Str = StringRegExpReplace($str, '^[^%]*?%|%[^%]*?$', '')
Until @extended = 0
MsgBox(0, '', $Str)

Qokelate 发表于 2013-4-21 23:19:44

回复 6# afan


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

   方法收下   3Q

xikjun 发表于 2013-4-23 17:27:58

Local $Str = '%123%ABC%456%'
$Str = StringRegExpReplace($str, '.*?%(+)%.*', '\1')
MsgBox (0, "Tips", $str)
只保留ABC

kevinch 发表于 2013-4-23 20:11:51

Local $Str = '%123%%%'
$arr=StringSplit($Str,"%")
$Str=$arr/2)]
MsgBox(0, '', $Str)感觉不用正则,除非能使用平衡组功能

Qokelate 发表于 2013-4-23 22:48:05

回复 9# kevinch


    这思路不错,又学一招
页: [1]
查看完整版本: 求个正则