131738 发表于 2015-3-28 12:45:17

[已解决] 请问, 如何正则匹配整行文本?

本帖最后由 131738 于 2015-3-28 15:58 编辑

正则大师 afan 出手, 问题解决!
正则表达式在 2 楼!

在一个 txt 文件中, 有 1 行这样的文本:
第 1 个字符为:      "_"
最后 1 个字符, 或者说行结束的可见字符为:   ")"
这行文本在 txt 文件中是一个新行的开始, 并且独占一整行.

脚本中这样判断没有效果:
$String = 读取 txt 文件的行文本字符串
StringLeft($String, 1) = "_" And StringRight($String, 1) = ")"

请问如何正则匹配这样的整行文本?

afan 发表于 2015-3-28 13:32:40

这样的吧Local $Str = _
                '_ytjkuy)kul)' & @CRLF & _
                'lkjlryekl'
;~MsgBox(0, '原字符串', $Str)
Local $aSR = StringRegExp($str, '^\s*(_\V+\))\h*(?=\v|$)', 3)
If Not @Error Then MsgBox(0, $aSR, $Str)

131738 发表于 2015-3-28 14:21:38

本帖最后由 131738 于 2015-3-28 14:23 编辑

这样的吧
afan 发表于 2015-3-28 13:32 http://www.autoitx.com/images/common/back.gif

不是, $Str 设置不对!
如果实在要这样设置,应是:

$Str = '_ytjkuy) (kul ) lkjlryekl)'
行文本以    _   字符开头,   以    )   字符结束这一行. 当然还有回车, 换行等不可见字符.

如果这样在脚本中设置, 我上面的 If 语句可以判断!
问题是 $Str 不是设置的, 而是循环读取 txt 文件一行文本得来的, 这样我的 If 语句就没有效果了

afan 发表于 2015-3-28 14:24:33

本帖最后由 afan 于 2015-3-28 14:25 编辑

我那个就是_开头)结束行啊
只不过我加了一行,为了适应更多情况而已,单行、多行都能判断

afan 发表于 2015-3-28 14:28:08

莫非你是想找出符合条件的行?而此行不一定在首行

afan 发表于 2015-3-28 14:32:52

本帖最后由 afan 于 2015-3-28 14:34 编辑

不是, $Str 设置不对!
如果实在要这样设置,应是:

$Str = '_ytjkuy) (kul ) lkjlryekl)'
行文本以...
131738 发表于 2015-3-28 14:21 http://www.autoitx.com/images/common/back.gif


    如果你是循环读取,那就每次只有一行了。你是想判断是否符合_*)条件? 那就仍然用2#的代码就行…

131738 发表于 2015-3-28 14:36:07

如果你是循环读取,那就每次只有一行了。你是想判断是否符合_*)条件? 那就仍然用2#的代码就行…
afan 发表于 2015-3-28 14:32 http://www.autoitx.com/images/common/back.gif

我再试试看......

131738 发表于 2015-3-28 14:37:01

莫非你是想找出符合条件的行?而此行不一定在首行
afan 发表于 2015-3-28 14:28 http://www.autoitx.com/images/common/back.gif

对的...........

afan 发表于 2015-3-28 14:39:47

对的...........
131738 发表于 2015-3-28 14:37 http://www.autoitx.com/images/common/back.gif


    那你就不用逐行判断了,2#的表达式前面加个 (?m) 即可,即“Local $aSR = StringRegExp($str, '(?m)^\s*(_\V+\))\h*(?=\v|$)', 3)”

131738 发表于 2015-3-28 15:56:49

那你就不用逐行判断了,2#的表达式前面加个 (?m) 即可,即“Local $aSR = StringRegExp($str, '( ...
afan 发表于 2015-3-28 14:39 http://www.autoitx.com/images/common/back.gif

谢谢! 2# 正则通过....
因为还要判断其它行的文本, 暂时没有加 (?m).....
页: [1]
查看完整版本: [已解决] 请问, 如何正则匹配整行文本?