- 积分
- 32
- 注册时间
- 2009-7-29
- 仿真币
-
- 最后登录
- 1970-1-1
|
楼主 |
发表于 2013-7-9 16:57:30
|
显示全部楼层
来自 英国
liuyalong008 发表于 2013-7-9 14:01
第一个问题,关于回车加换行用或者用:都可以解决,[\r\n]+是关键,str1和str2一个是回车一个是换行
按理 ...
版主未看清第一个问题。(4#蓝色字体部分,(末行可能没有回车符、换行符,若此时刚好末行本身也是重复行,它就不会被删除!因此此正则表达式也不完善。))
将1#的str1,str2改编一下用来测试。- str3 = ... % 根据1#的str1改编,重复原末行一次,并去掉末行的回车或换行符。
- ['*SET_NODE_LIST *SET_NODE_LIST',char(13),...
- '*SET_NODE_LIST',char(13),...
- '%d',char(13),...
- '%d',char(13),...
- '*DEFINE_CURVE',char(13),...
- '*DEFINE_CURVE',char(13),...
- '%d,0,1.0,1.0,0.0,0.0',char(13),...
- '*LOAD_NODE_LIST',char(13),...
- '*DEFINE_CURVE',char(13),...
- '*DEFINE_CURVE',char(13),...
- '%d,%d,%d,1.0',char(13),...
- '%d,%d,%d,1.0'];
- % st4 % 根据1#的str2改编,重复原末行一次,末行无回车或换行符。
- str4 = sprintf('*SET_NODE_LIST *SET_NODE_LIST\n*SET_NODE_LIST\n%%d\n%%d\n*DEFINE_CURVE\n*DEFINE_CURVE\n%%d,0,1.0,1.0,0.0,0.0\n*LOAD_NODE_LIST\n*DEFINE_CURVE\n*DEFINE_CURVE\n%%d,%%d,%%d,1.0\n%%d,%%d,%%d,1.0')
- % 下面的2种模式均未通过测试,即均未删除末行重复行。(问题依然存在)
- pat = '(?<=(^|[\r\n]+))(.*[\r\n]+)\1+';
- mystr3 = regexprep(str3,pat,'$1')
- mystr4 = regexprep(str4,pat,'$1')
- pat = '(?<=(^|[\r\n]+))(.*[\r\n]+)\1+'
- mystr3 = regexprep(str3,pat,'$1')
- mystr4 = regexprep(str4,pat,'$1')
复制代码 |
|