找回密码
 加入
搜索
查看: 8008|回复: 21

[AU3基础] [已解决]正则去除多行空白符与简单的零宽断言……

  [复制链接]
发表于 2010-5-8 07:58:34 | 显示全部楼层 |阅读模式
本帖最后由 kxing 于 2010-5-10 13:50 编辑

我目前是这样解决的,希望能一行搞定。
多谢!!!

$str="  http://  "&@crlf&"  ftp://   "&@crlf&" lkjlkj"
$str=StringRegExpReplace($str,"(?m)^\s+","")
$str=StringRegExpReplace($str,"(?m)\s+$","")
msgbox(0,'',$str)

评分

参与人数 1金钱 +10 收起 理由
afan + 10 感谢主动将修改帖子分类为[已解决],请继续 ...

查看全部评分

发表于 2010-5-8 08:39:15 | 显示全部楼层
$str = "  http://  " & @CRLF & "  ftp://   " & @CRLF & " lkjlkj"
$str = StringRegExpReplace($str, "(?m)^\s+|(?m)\s+$", "")
MsgBox(0, '', $str)
 楼主| 发表于 2010-5-8 08:19:48 | 显示全部楼层
另外在求教个问题.
怎样能匹配多行的行首字符呢
用了这样不行.

stringregexp("hjji"&@crlf&"hooi"&@crlf&"oo","(?m)^h")
这个表达式依然为true
发表于 2010-5-8 08:46:25 | 显示全部楼层
不知道楼主是不是要这样,可能是我理解错了。
Local $sText
$Text = "hjji" & @CRLF & "hooi" & @CRLF & "oo"
$aReg = StringRegExp(@CRLF & $Text, "\n\s*.", 3)
For $i = 0 To UBound($aReg) - 1
        $sText &= $aReg[$i]
Next
MsgBox(0, '', $sText)
 楼主| 发表于 2010-5-8 09:08:53 | 显示全部楼层
多谢了,我去看看...
发表于 2010-5-8 09:46:47 | 显示全部楼层
不替换的可以吗?
#include <array.au3>
$str = "        http://           " & @CRLF & "  ftp://                       " & @CRLF & "       lkjlkj           "
$str = StringRegExp($str, "\S+", 3)
_ArrayDisplay($str)
 楼主| 发表于 2010-5-8 11:40:04 | 显示全部楼层
第一个问题解决了.这个 | 不是或的意思吗?怎么可以都成立呢

另外第二个问题不能直接用一行搞定吗,replace可用(?m)匹配多行怎么regexp就不行呢

$str="hjji"&@crlf&"hooi"&@crlf&"hoo"
if stringregexp(@crlf&$str,"\n^h")
不能匹配每一行的行首的h则成立吗?
 楼主| 发表于 2010-5-8 11:40:11 | 显示全部楼层
本帖最后由 kxing 于 2010-5-8 11:41 编辑

网速不好,重复发帖了。。。
发表于 2010-5-8 12:08:52 | 显示全部楼层
If StringRegExp(@CRLF & $str, "\nh") Then ...
 楼主| 发表于 2010-5-8 18:08:47 | 显示全部楼层
原来这样啊,^都不用了。
多谢楼上的几个朋友!!!
 楼主| 发表于 2010-5-8 18:11:52 | 显示全部楼层
不行呢,怎么下面这条语句也为真:
$str="hjjj"&@crlf&"hooo"&@crlf&"21oiui"
If StringRegExp(@CRLF & $str, "\nh") Then msgbox(0,'','')

最后一行行首不是h啊!!!
发表于 2010-5-8 20:45:31 | 显示全部楼层
本帖最后由 afan 于 2010-5-8 20:49 编辑
不行呢,怎么下面这条语句也为真:
$str="hjjj"&@crlf&"hooo"&@crlf&"21oiui"
If StringRegExp(@CRLF & $s ...
kxing 发表于 2010-5-8 18:11



    都有两行h打头的,还不真?
你是要判断所有行都是h打头才是真吗?那就如下:
$str = "hjjj" & @CRLF & "hooo" & @CRLF & "21oiui"
If Not StringRegExp(@CRLF & $str, "\n[^h]") Then MsgBox(64, 'ok,都是h打头', $str)
 楼主| 发表于 2010-5-8 21:02:19 | 显示全部楼层
thanks a lot!!!
 楼主| 发表于 2010-5-9 22:32:30 | 显示全部楼层
在请教下,如果要匹配行首为:http:// 怎么办呢?
要求多行匹配的,麻烦高手指点,多谢!!!!!
发表于 2010-5-9 22:53:29 | 显示全部楼层
#include <Array.au3>
$Str = _
                'http://www.autoitx.com/thread-15261-1-1.html' & @CRLF & _
                'ftp://' & @CRLF & _
                'http://aaa' & @CRLF & _
                'www'
Msgbox(0, '原字符串', $str)
$sR = StringRegExp(@CRLF & $str, '\n(http://.+)', 3)
_ArrayDisplay($sR, '')
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-22 22:59 , Processed in 0.090567 second(s), 28 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表