[已解决]正则如何替换带有换行符 Chr(10) 或回车的字符
本帖最后由 xdcysten 于 2013-3-18 18:37 编辑比如想替换掉'<1299>8W5D2D2 99x 645.65</1299> ' 这一行,用
StringRegExpReplace($sInput01,'<(?i)1299>(.*?)</(?i)1299>', '<1299>8W5D2D2 880x 775.65'& Chr(10)&'</1299>')
是可以的,但遇到像'<1298>8W5D2D2 99x 645.65'& Chr(10) &'</1298> ' ,带有 换行符 Chr(10) 或回车的就不成了
Local $sInput = '<name>AUTOIT </name> '& Chr(10)& _
'<1298>8W5D2D2 99x 645.65'& Chr(10) &'</1298> '& _
'<1299>8W5D2D2 99x 645.65</1299> '& _
'<1300>8W5D2D2 99x 645.65</1300> '
Local $sInput02 = StringRegExpReplace($sInput01,'<(?i)1298>(.*?)</(?i)1298>', '<1298>8W5D2D2 880x 775.65'& Chr(10)&'</1298>')
MsgBox(4096, "Results", $sInput02) 不知道LZ到底要替换什么… 关键的东西不说明~$sInput02 = StringRegExpReplace($sInput,'(<1298>\w+\h+)\w+\h+\V+(?=[\S\s]*?</1298>)', '${1}880x 775.65') 本帖最后由 xdcysten 于 2013-3-18 04:19 编辑
回复 2# afan
不好意思,语文水平太差 {:face (356):} ,还请见谅见谅,我的意思是想把
'<1298> ******** 99x 645.65'&Chr(10)&'</1298> ' 这一串字符替换成 '<1623> gsdgsdg 160x 787112.22'&Chr(10)&'</1623> '
'<1298> </1298> '之间的字符不定型,也有可能是'<1298> 8W5D2D2 x99 75.65'&Chr(21)&'</1298> ' 这么一串字符
那个 Chr(10) 换行符,使用帮助里的例子 如: '<(?i)1298>(.*?)</(?i)1298>' 不能匹配到,
不知如何能匹配到字符和 控制符Chr(0) ~Chr(31) 一起的字符串呢
Local $sInput = '<name>autoit </name> '& Chr(10)& _.
'<1297> ******** 99x 645.65'& Chr(10) &'</1297> '& Chr(10) & Chr(10) & _
'<1298> ******** 99x 645.65'&Chr(13)&'</1298> '& Chr(10) & Chr(10) & _
'<1299>8W5D2D2 x99 645.65'& Chr(12) &'</1299> '
MsgBox(4096, "Results", StringRegExpReplace($sInput, '<(?i)1298>(.*?)</(?i)1298>', '<1298>8W5D2D2 660x 775.65</1298>')) 回复 3# xdcysten
你的表达式和你说的把xxx替换成xxx 完全不符,到底要替换什么不清楚…
根本不需要说明 chr(),“(?s)”就可以忽略了。
如果你想“'<1298> ******** 99x 645.65'&Chr(10)&'</1298> ' 这一串字符替换成 '<1623> gsdgsdg 160x 787112.22'&Chr(10)&'</1623> '”整行替换的话根本不要想那么多。二楼的我还给你保留了“99x 645.65”前后的字符,包括原始的有无回车换行等。看来你并不需要~Local $sInput = '<name>autoit </name> '& Chr(10)& _
'<1297> ******** 99x 645.65' & Chr(10) & '</1297> ' & Chr(10) & Chr(10) & _
'<1298> ******** 99x 645.65' &Chr(13)& '</1298> ' & Chr(10) & Chr(10) & _
'<1299>8W5D2D2 x99 645.65' & Chr(12) & '</1299> '
Local $sInput02 = StringRegExpReplace($sInput,'(?s)<1298>.+?</1298>', '<1623> gsdgsdg 160x 787112.22'&Chr(10)&'</1623> ')
MsgBox(4096, "Results", $sInput & @CRLF & '======= 前后 ========' & @CRLF & $sInput02) 回复xdcysten
你的表达式和你说的把xxx替换成xxx 完全不符,到底要替换什么不清楚…
根本不需 ...
afan 发表于 2013-3-18 10:30 http://www.autoitx.com/images/common/back.gif
那个表达式不符合说明,误导了大家,不好意思,吾正则实在是非常非常不合格也,呵呵,看来得要学习学习一下了,以为匹配不到是那控制符的问题,A版的正则很强大,学习了,谢谢
页:
[1]