manlty 发表于 2011-7-27 23:09:51

正则求解!关于匹配换行符或字符结束如何正则表达

657899 *张三李四 32423453 A567
532424 ST孙李 45345 90899
456767 王张江姚 6544545 646556

比如以上是读取的一段文本,怎么用stringregexp提出这三行字符?
我用的表达式是
$fky=StringRegExp($fky,'\d{6}\s[*ST]{0,}[^\x00-\xff]{1,4}.+\n',3)
可以匹配头两行的文字,最后一行匹配不了(因为最后一行结尾处没有换行符)
望高手指正

3mile 发表于 2011-7-27 23:48:01

不知道你的文件结构,是匹配所有的行?
还是有特定的要求?
$fky=StringRegExp($fky,'.+(?=\n?)',3)

manlty 发表于 2011-7-28 08:31:26

本帖最后由 manlty 于 2011-7-28 09:01 编辑

是将所有前面6个数字一个空格跟着不超过4个中文字然后后面一直到行尾(包括文终)这样的数据提取出来。

3mile 发表于 2011-7-28 09:23:45

是将所有前面6个数字一个空格跟着不超过4个中文字然后后面一直到行尾(包括文终)这样的数据提取出来。
manlty 发表于 2011-7-28 08:31 http://www.autoitx.com/images/common/back.gif
(包括文终) 这是什么意思呢?
前面6个数字一个空格跟着不超过4个中文字然后后面一直到行尾:(?m)^\d{6}\s[\x{4e00}-\x{9fa5}]{1,4}.*

主要是你的问题提得不清不楚,只能靠猜.

大绯狼 发表于 2011-7-28 10:01:14

把\n换成$即可

manlty 发表于 2011-7-28 16:24:03

回复 4# 3mile


    你看1楼我给那段示例字符串,如果只考虑转行,最后一行在最后位置没有转行符,提不出来。
所以我说包括转行或者文终

manlty 发表于 2011-7-28 16:28:20

本帖最后由 manlty 于 2011-7-28 16:35 编辑

没有解决,请高手继续12345 s*老王捕获 serwe.%sfa f56
657899 *张三李四 32423453 A567
532424 ST孙李 45345 90899
456767 王张江姚 6544545 646556谁能用stringregexp将上面第二、三、四行提出存入数组?(为什么不要第一行,因为第一行不符合我的要求,就是先6个数字+空格+不超过4个汉字+任意字符直到转行符或者字符串结尾)

love5173 发表于 2011-7-28 16:40:54

\d{6}\h[\*ST]*[\x{4e00}-\x{9fa5}]{1,4}.*

3mile 发表于 2011-7-28 16:45:32

(?m)^\d{6}\s[*ST]*[\x{4e00}-\x{9fa5}]{1,4}.+
页: [1]
查看完整版本: 正则求解!关于匹配换行符或字符结束如何正则表达