帆船 发表于 2017-6-21 21:13:24

正则问题 - 如何在A后面是B的情况下不捕获?

本帖最后由 帆船 于 2017-6-22 14:45 编辑

Global $String1 = "This is a String, Without anything", $String2 = 'This is a String With "$"', $String3 = "This is a String With $", $String4 = 'This is a String With a "$" by ' & Chr(36) & "'s ASCII Code..."对如上这个字符串使用正则,提取字符串类型变量的名称和值,我目前采用(?i)(\$[\w]+?)[\h]*=[\h]*(["'][^\$]*["'])但是由于存在极端情况,会出现第二个变量值被截断的情况,$String1
"This is a String, Without anything"
$String2
'This is a String With "
$String4
'This is a String With a "
[完毕]我想如何在 \$ 后面是 StringXX 的情况下才截断?

如果能够实现,我想这样是比较好的,毕竟二楼的会受 & 连接的影响,七楼的对字符串变量的值含有逗号会造成截断……
我可以保证输入的字符串变量内容不会含有 \$StringXX

--------------------------------------------------------------------------
使用二楼的之后,才发现我的正则不止是被$影响,还跟引号有关……使用 & 连接的表达方法也无法支持……

zghwelcome 发表于 2017-6-21 21:54:02

(?i)(\$[\w]+?)\s*=\s*(\S)(\V*?)\2得到:$String1
"
This is a String
$String2
'
This is a String With "$"
[完毕]坐等A版更精妙的

帆船 发表于 2017-6-21 21:57:50

回复 2# zghwelcome
您那个和好像是多余了?

帆船 发表于 2017-6-21 22:10:00

回复 2# zghwelcome
是不错的,使用您的表达式之后我才发现问题还跟引号有关……

zghwelcome 发表于 2017-6-21 22:10:31

能力有限,看A版怎么写

帆船 发表于 2017-6-21 22:22:16

回复 5# zghwelcome
然后我又遇上Chr()函数……炸裂……

Alam 发表于 2017-6-22 13:42:53

(?:^|,\h*)(\$\H+)\h*=\h*([^,\v]+)仅是针对一楼示例.

帆船 发表于 2017-6-22 14:09:17

本帖最后由 帆船 于 2017-6-22 14:25 编辑

回复 7# Alam
如果前面加上 Global 第一个就取不到了呢,并且如果字符串内含有英文半角逗号也会截断,您再帮忙看看?

Alam 发表于 2017-6-23 10:45:33

问题改来改去,明显跟标题不符了吧? 先确定匹配的文本和结果吧,谁有空跟你玩接龙猜迷呢.

tubaba 发表于 2017-6-24 01:58:22

如果你是要处理AU3脚本,变量赋值有着许多的样式.那怕是你顶楼贴出的代码都不能代表所有的情况.只有分析其共同的特点,才能正确提取变量及值.这个问题我在论坛求教过.可惜的是,没人回答
http://www.autoitx.com/forum.php?mod=viewthread&tid=52001&fromuid=7638255,希望对你有所帮助
页: [1]
查看完整版本: 正则问题 - 如何在A后面是B的情况下不捕获?