Qokelate 发表于 2012-7-10 15:34:05

已解决 如何用正则删除文本最后10行

本帖最后由 Qokelate 于 2012-7-10 17:41 编辑

1.文本小于10行则不进行任何操作
2.文本大于10行且最后行是空行则删除文本倒数第二行至倒数第11行(就是保留最后那个空行)
3.文本大于10行且最后行不是空行则删除最后10行

用正则怎样实现?

ooxxgod 发表于 2012-7-10 16:47:24

正则不回 帮顶楼

afan 发表于 2012-7-10 17:10:54

StringRegExpReplace($Str, '(?<=[^\r\n])(?:\r\n\V+){10}$|(^\V+(?:\v+\V+){9})(?s).*(?=\r\n$)', '\1')

Qokelate 发表于 2012-7-10 17:17:04

本帖最后由 Qokelate 于 2012-7-10 17:18 编辑

回复 3# afan


   
$string = _
                '1' & @CRLF & _
                '2' & @CRLF & _
                '3' & @CRLF & _
                '4' & @CRLF & _
                '5' & @CRLF & _
                '6' & @CRLF & _
                '7' & @CRLF & _
                '8' & @CRLF & _
                '9' & @CRLF & _
                '10' & @CRLF & _
                '11' & @CRLF & _
                '12' & @CRLF & _
                '13' & @CRLF


$b = StringRegExpReplace($string, '(?<=[^\r\n])(?:\r\n\V+){10}$|(^\V+(?:\v+\V+){9})(?s).*(?=\r\n$)', '\1')
MsgBox(0, 0, $b)


最后行是空行的话应该是删除倒数第2行至倒数第11行   而不是保留10行   (见要求2)怎样改啊

xyhqqaa 发表于 2012-7-10 17:22:07

赚分来的。。。正则不懂

afan 发表于 2012-7-10 17:24:57

回复 4# Qokelate


    看错了,还以为是删除倒数第二行至第11行,漏了倒数StringRegExpReplace($Str, '(?<=[^\r\n])(?:\r\n\V+){10}(\r\n)?$', '\1')

afan 发表于 2012-7-10 17:31:26

晕,我没看错,是你开始就说错…
2.文本大于10行且最后行是空行则删除文本倒数第二行至第11行(就是保留最后那个空行)

Qokelate 发表于 2012-7-10 17:31:34

问题解决   3Q

Qokelate 发表于 2012-7-10 17:42:27

回复 7# afan


    嗯是我描述错了    不好意思
页: [1]
查看完整版本: 已解决 如何用正则删除文本最后10行