kxing 发表于 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)

水木子 发表于 2010-5-8 08:39:15

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

kxing 发表于 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)

kxing 发表于 2010-5-8 09:08:53

多谢了,我去看看...

3mile 发表于 2010-5-8 09:46:47

不替换的可以吗?#include <array.au3>
$str = "      http://         " & @CRLF & "ftp://                     " & @CRLF & "       lkjlkj         "
$str = StringRegExp($str, "\S+", 3)
_ArrayDisplay($str)

kxing 发表于 2010-5-8 11:40:04

第一个问题解决了.这个 | 不是或的意思吗?怎么可以都成立呢

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

$str="hjji"&@crlf&"hooi"&@crlf&"hoo"
if stringregexp(@crlf&$str,"\n^h")
不能匹配每一行的行首的h则成立吗?

kxing 发表于 2010-5-8 11:40:11

本帖最后由 kxing 于 2010-5-8 11:41 编辑

网速不好,重复发帖了。。。

afan 发表于 2010-5-8 12:08:52

If StringRegExp(@CRLF & $str, "\nh") Then ...

kxing 发表于 2010-5-8 18:08:47

原来这样啊,^都不用了。
多谢楼上的几个朋友!!!

kxing 发表于 2010-5-8 18:11:52

不行呢,怎么下面这条语句也为真:
$str="hjjj"&@crlf&"hooo"&@crlf&"21oiui"
If StringRegExp(@CRLF & $str, "\nh") Then msgbox(0,'','')

最后一行行首不是h啊!!!

afan 发表于 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 http://www.autoitx.com/images/common/back.gif


    都有两行h打头的,还不真?
你是要判断所有行都是h打头才是真吗?那就如下:$str = "hjjj" & @CRLF & "hooo" & @CRLF & "21oiui"
If Not StringRegExp(@CRLF & $str, "\n[^h]") Then MsgBox(64, 'ok,都是h打头', $str)

kxing 发表于 2010-5-8 21:02:19

thanks a lot!!!

kxing 发表于 2010-5-9 22:32:30

在请教下,如果要匹配行首为:http:// 怎么办呢?
要求多行匹配的,麻烦高手指点,多谢!!!!!

afan 发表于 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, '')
页: [1] 2
查看完整版本: [已解决]正则去除多行空白符与简单的零宽断言……