怎么提取这里面的东西出来 正则?[已解决]
本帖最后由 kaitou8 于 2011-11-11 11:30 编辑1 某某 11 13123456789( 某某一) 方的说法
2 某某二 11 15987654321 某某 辐射防护5198撒旦发
3 某某三 6 13456789123某很多某413打发218
4 某某某 8 13963852741 某都某 萨芬和技术
5 好哈的 11 13124003652某的某 阿呆发4
6 地方发 10 13950497469 某的某 死雅3典2
7 东方红 11 87123456( 某某雯) 就哦3啊就
8 得以苹 11 87544444某某华 1发得分
9 的很多豪 10 13644444982 某某友 东23方红23地方
比如 第一行 提取结果
1
某某
11
13123456789
某某一
方的说法
后面的类似整个是一文本
(?<=\n\d+\s+)\w+ 比如用这个提取第二个位置的 用下的RegexTester测试正常到了au3上面就不可以了..
$var=StringRegExp($text,'(?<=\n\d+\s+)\w+',3)
For $i = 0 to UBound($var)-1
msgbox(0,$i+1,$var[$i])
Next 还是没明白你最终要得到什么样的结果! 还是没明白你最终要得到什么样的结果!
水木子 发表于 2011-11-10 19:28 http://www.autoitx.com/images/common/back.gif
就把每一行 分割成
1
某某
11
13123456789
某某一
方的说法
这样的六行 猜的!试试!
Local $z = 1
While 1
Local $sText = FileReadLine('1.txt', $z)
If @error = -1 Then ExitLoop
$sReg = StringRegExpReplace($sText, '(\d+\h+\d+)', '$1' & @CRLF)
$sReg = StringRegExpReplace($sReg, '\h{2,}', @CRLF)
MsgBox(0, '', $sReg)
$z += 1
WEnd 本帖最后由 kaitou8 于 2011-11-10 20:48 编辑
猜的!试试!
水木子 发表于 2011-11-10 20:19 http://www.autoitx.com/images/common/back.gif
嗯 大概是这样子 很感谢
我是看http://www.autoitx.com/forum.php?mod=viewthread&tid=2925&highlight=%D5%FD%D4%F2%B1%ED%B4%EF%CA%BD30%B7%D6%D6%D3%C8%EB%C3%C5%BD%CC%B3%CC
这个里面想弄的
但是里面没有看到\h的说明 刚查stringregexp里面有{:face (189):}
还有搜的时候也经常看到$1 这个是什么意思
好像1 最后两项没有分开 其他都可以 还有4 和9 中间多了个空格还是换行的
要是想6个分别输出应该怎么弄 用stringsplit()就行了,空格作为分隔符。 本帖最后由 水木子 于 2011-11-10 20:56 编辑
回复 6# xms77
请注意看
第一行,某某一前面也是有空白符的!
第三行,某很多某前面反而又没有空白符。
使用最笨蛋的方法,匹配每一个地方!但很准确!
本帖最后由 gzh888666 于 2011-11-11 02:09 编辑#include <Array.au3>
Local $txt=""
Local $Str = _
'1 某某 11 13123456789( 某某一) 方的说法' & @CRLF & _
'2 某某二 1115987654321 某某 辐射防护5198撒旦发' & @CRLF & _
'3 某某三 6 13456789123某很多某413打发218' & @CRLF & _
'4 某某某 8 13963852741 某都某 萨芬和技术' & @CRLF & _
'5 好哈的 11 13124003652某的某 阿呆发4 ' & @CRLF & _
'6 地方发 10 13950497469 某的某 死雅3典2' & @CRLF & _
'7 东方红 11 87123456( 某某雯) 就哦3啊就' & @CRLF & _
'8 得以苹 11 87544444某某华 1发得分' & @CRLF & _
'9 的很多豪 10 13644444982 某某友 东23方红23地方' & @CRLF
Local $Test = StringRegExp($str, '(?s)(\d+)\h+([\x{4e00}-\x{9fff}]+)\h+(\d+)\h+(\d+).*?([\x{4e00}-\x{9fff}]+)[\h+\)].*?(\S+)', 3)
If Not @Error Then _ArrayDisplay($Test, UBound($Test))
For $i = 0 To UBound($Test)-1 Step 6
For $n=0 To 5
$txt &= $Test[$i+$n]&"|"
Next
MsgBox(0,"",StringTrimRight ($txt,1))
$txt=""
Next 试下另类的
#include <Array.au3>
Local $Str = _
'1 某某 11 13123456789( 某某一) 方的说法' & @CRLF & _
'2 某某二 11 15987654321 某某 辐射防护5198撒旦发' & @CRLF & _
'3 某某三 6 13456789123某很多某413打发218' & @CRLF & _
'4 某某某 8 13963852741 某都某 萨芬和技术' & @CRLF & _
'5 好哈的 11 13124003652某的某 阿呆发4' & @CRLF & _
'6 地方发 10 13950497469 某的某 死雅3典2' & @CRLF & _
'7 东方红 11 87123456( 某某雯) 就哦3啊就' & @CRLF & _
'8 得以苹 11 87544444某某华 1发得分' & @CRLF & _
'9 的很多豪 10 13644444982 某某友 东23方红23地方'
MsgBox(0, '原字符串', $Str)
Local $Test = StringRegExp($str, '\d{8,}(?=[^\d]+\h)|[^\h\(\)\v]+', 3)
If Not @Error Then
_ArrayDisplay($Test, UBound($Test))
Local $Array
For $i=0 to UBound($Test)-1 Step 6
for $n=0 to 5
$Array[$i/6][$n]=$Test[$i+$n]
Next
Next
EndIf
_ArrayDisplay($Array)
正则越学越深,真是个好东西! 回复 8# gzh888666
请教这个事什么意思?[\x{4e00}-\x{9fff}]
没学过。。 回复gzh888666
请教这个事什么意思?[\x{4e00}-\x{9fff}]
没学过。。
lixiaolong 发表于 2011-11-11 06:22 http://www.autoitx.com/images/common/back.gif
我查了,是中日韩汉字的意思吧? split就可以,一定要用正则么... 试一下弄个ini咋样 我查了,是中日韩汉字的意思吧?
lixiaolong 发表于 2011-11-11 06:37 http://www.autoitx.com/images/common/back.gif
差不多这个意思了
也就是Unicode编码中的4e00-9fff归类为“CJK 统一表意符号”,涵盖了绝大多数中文字符。
指定Unicode编码有三种形式:
①\uxxxx
②\u{xxxx}
③\x{xxxx}
其中的xxxx为编码的值,也就是必须有4位16进制数字。
象.NET、Java、JavaScript和Python等就是采用第一种方式的正则表达;而象Ruby等采用第二种方式,而象PHP等采用第三种方式
页:
[1]
2