heroxianf 发表于 2015-12-7 12:00:34

关于正则获取TXT文本后输出结果咨询[已解决]

本帖最后由 heroxianf 于 2015-12-7 15:47 编辑

#include <Array.au3>
#include <File.au3>
#include <MsgBoxConstants.au3>
#include <StringConstants.au3>


Local $str, $i
Local $sFilePath = "C:\Users\liuxianfeng1\Desktop\20151207085604.txt"
Local $zz = "\[.*\n[^\.].*"

$str = StringRegExp(FileRead($sFilePath), $zz, 1)

For $i = 1 To UBound($str)
MsgBox(0, 0, $str)
Next文本里的内容是:
.




这里的文字是(www.baidu.com)随机生成的。

.



这里的文字是随(www.baidu.com)机生成的。


.




这里的文字是随(www.baidu.com)机生成的。


.



我想通过正则 \[.*\n[^\.].* 抓取内容后输出,但是没有成功。

afan 发表于 2015-12-7 12:51:00

光说个错误的表达式,却没说明要捕获什么?
是要捕获中括号里面的吗?那加 \n 是什么鬼…

heroxianf 发表于 2015-12-7 13:30:37

本帖最后由 heroxianf 于 2015-12-7 13:33 编辑

回复 2# afan


A大,表达式在表达式工具里测试时可以获取我想要的内容的。
要获取的内容是:

这里的文字是(www.baidu.com)随机生成的。

afan 发表于 2015-12-7 13:44:06

回复 3# heroxianf


    Au3的正则不同…(?s)(?<=^|\n)\[.*?(?=\r\n\[|$)

heroxianf 发表于 2015-12-7 13:48:26

回复 4# afan

谢谢A大,我用的是C#的环境测试的正则。看来以后不能用C#环境测试了。

heroxianf 发表于 2015-12-7 13:55:34

回复 4# afan #include <Array.au3>
#include <File.au3>
#include <MsgBoxConstants.au3>
#include <StringConstants.au3>


Local $str, $i, $aArray1
Local $sFilePath = "C:\Users\liuxianfeng1\Desktop\20151207085604.txt"
Local $zz = "(?s)(?<=^|\n)\[.*?(?=\r\n\[|$)"

$str = StringRegExp(FileRead($sFilePath), $zz, 1)

For $i = 1 To UBound($str)
        MsgBox(0, "测试结果", $str)
NextA大 我测试的时候,获取的内容超出范围了,连   “.”   都获取上了。如果点之间有字符的话 也会被获取。

heroxianf 发表于 2015-12-7 14:09:58




我要的字符就是红框里的东西,其他的都不需要。

heroxianf 发表于 2015-12-7 14:30:06

回复 4# afan


\[.*\]

这个正则只能匹配出[]之间的内容包括[]

afan 发表于 2015-12-7 14:34:10

回复 6# heroxianf


    我以为那个点也是属于随机内容…(?s)(?<=^|\n)\[.*?(?=\s*\r\n\.|$)

heroxianf 发表于 2015-12-7 14:56:11

回复 9# afan




A大按照我上图中的内容测试,还是会包含 “.” 和后边的数字。

afan 发表于 2015-12-7 15:10:15

回复afan




A大按照我上图中的内容测试,还是会包含 “.” 和后边的数字。
heroxianf 发表于 2015-12-7 14:56 http://www.autoitx.com/images/common/back.gif


    你一楼的测试内容 . 后面就没有的数字吧,怎么捕获到数字了?

heroxianf 发表于 2015-12-7 15:17:34

回复 11# afan

A大我修改了正则可以只获取我想要的内容了,请帮忙看看是否合理。谢谢(?s)(?<=^|\n)\[.*?(?=\s*\r\n\n|$)测试内容(测试内容.之间有可能还生成随机的文字或是数字)
.




这里的文字是(www.baidu.com)随机生成的。

.
1
.



这里的文字是随(www.baidu.com)机生成的。


.




这里的文字是随(www.baidu.com)机生成的。


.

2
.



这里的文字是随(www.baidu.com)机生成的。


.

3
.

afan 发表于 2015-12-7 15:22:29

回复afan

A大我修改了正则可以只获取我想要的内容了,请帮忙看看是否合理。谢谢测试内容(测试内容.之 ...
heroxianf 发表于 2015-12-7 15:17 http://www.autoitx.com/images/common/back.gif


    你把你贴出来的东西复制下来,用你的表达式测试,跟我提供的表达式的结果刚好相反。
你的测试txt需要以附件的形式上传测试,因为它的换行符不一定是 CRLF

afan 发表于 2015-12-7 15:25:33

回复 12# heroxianf


    没有Au3的测试工具怎么玩… http://www.autoitx.com/thread-19345-1-1.html

heroxianf 发表于 2015-12-7 15:29:38

回复 14# afan
TXT文本上传了。我去了解下正则测试工具。
页: [1] 2
查看完整版本: 关于正则获取TXT文本后输出结果咨询[已解决]