[已解决]请教一个正则替换(取反)的问题
本帖最后由 athland5013 于 2015-2-6 01:11 编辑Local $Txt = '你好0我是1一个2需要3匹配的4字符串5'
;已知条件"我是",需要匹配该条件的后面第一个数字
Local $Match = '我是'
Local $ret = StringRegExp($Txt, $Match & '(\d{1})', 3)
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $ret = ' & $ret & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
;我明白怎么用StringRegExp来匹配出来
;但问题来了,如果用 StringRegExpReplace 我却没有找到窍门
;我的思路是取反替换为空,却没有匹配成功
Local $ret = StringRegExpReplace($Txt, $Match & '[\^\d{1}].*?', '');我要得到 1,请教这里的正则应该怎么写,谢谢
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $ret = ' & $ret & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
;小弟先谢谢前辈 实在没看明白,是不是这个意思?Local $Txt = '你好0我是1一个2需要3匹配的4字符串5'
Local $ret = StringRegExpReplace($Txt, '(?<=是)\d', '')
ConsoleWrite($ret)
本帖最后由 athland5013 于 2015-2-5 08:45 编辑
回复 2# haijie1223
兄弟,你的代码结果是
$ret = 你好0我是一个2需要3匹配的4字符串5
我要的结果是'1',与你的刚刚相反
我需要的是第6行和第14行的结果是一样的,你复制我的代码运行一下就理解了 Local $Txt = '你好0我是1一个2需要3匹配的4字符串5'
Local $ret = StringRegExpReplace($Txt, '[^1]', '')
ConsoleWrite($ret)
这样会不会笑掉大牙?? $ret = StringRegExpReplace($Txt, '.*?' & $Match & '(\d).*', '\1') 回复 3# athland5013
实在是没看明白,这样?Local $Txt = '你好0我是1一个2需要3匹配的4字符串5'
;~ Local $ret = StringRegExpReplace($Txt, '(?<=是)\d', '')
Local $ret = StringRegExp($Txt, '(?<=是)\d', 3)
ConsoleWrite($ret) 楼主到底要干什么 楼主到底要干什么
netegg 发表于 2015-2-5 16:43 http://www.autoitx.com/images/common/back.gif
他是需要用替换的方式来获得和匹配的方式一样的结果。虽然就示例而言不需要用正则这种武器
$ret = StringRegExpReplace($Txt, '.*?' & $Match & '(\d).*', '\1')
afan 发表于 2015-2-5 10:44 http://www.autoitx.com/images/common/back.gif
谢谢指教,代码得到我想要的结果
结果 $ret = 1
但我之前测试的$ret = StringRegExpReplace($Txt, '.*?' & $Match & '(\d{1}).*?', '\1')
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $ret = ' & $ret & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console得到结果是 $ret = 1一个2需要3匹配的4字符串5
想请问下,我用的正则式基本就是比你的在行末多了个"?",结果差这么远!!
求这里的* 与 ? 的关系 和StringRegExpReplace替换的原理(就这个例子而言),谢谢 问号是尽量少,而前面是*的问号,代表可以最好是无。
在满足前面 '.*?' & $Match & '(\d{1})‘ 这些条件后,它就满意了,后面都可以不动了。所以,结果就是将前面那些替换成了之前取到的匹配组1,后面的没动 回复 8# afan
如果说这个示例用其他简单方法实现,A版你会用什么方法,可否提示一下,搜索数组,字典? 回复 10# afan
谢谢你的解答!
页:
[1]