社区
C#
帖子详情
求教:正则表达式跨行匹配
mike77
2006-08-27 11:41:49
下面的文本,
<KEY>
cccc
dddd
<KEY>
ffff
gggg
<KEY>
hhhh
iiii
如何写正则表达式把两个<KEY>之间和最后一个<KEY>到字符串末尾的内容分别提取出来,即
分别产生三个字符串:
1.
cccc
dddd
2.
ffff
gggg
3.
hhhh
iiii
请各位指教,多谢了。。。
...全文
1461
25
打赏
收藏
求教:正则表达式跨行匹配
下面的文本, cccc dddd ffff gggg hhhh iiii 如何写正则表达式把两个之间和最后一个到字符串末尾的内容分别提取出来,即 分别产生三个字符串: 1. cccc dddd 2. ffff gggg 3. hhhh iiii 请各位指教,多谢了。。。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
25 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
www_123du_com
2006-08-30
打赏
举报
回复
不知道你是怎么测的......
看来你那里的.NET和我这里的.NET有不同行为。
Ivony
2006-08-30
打赏
举报
回复
刚看明白……
@"<key>.*?((<key>)|$)"
lyfer
2006-08-30
打赏
举报
回复
呵呵,来看原帖的
mike77
2006-08-29
打赏
举报
回复
小总结:
● Ivony提出的@"<key>.*?</key>"方法应该是@"<key>.*</key>"改进过来,改正了“贪婪”算法匹配整个首尾<key>之间的结果。但是它还有一个缺陷是,测试文本中的标志没有</key>而是都是<key>。改用<KEY>[\s\S]*?<KEY>也只能匹配第一个<key>和第二个<key>之间的内容。
● www_123du_com和jingtao_zhou提供的方法测了,也只能匹配第一个<key>和第二个<key>之间的内容。
● 看来mobydick的方法现在看来是一个比较简单易行的方法。有那么一丁点美中不足是没有使用标准的正则匹配:)
● sswater的方法产生的想要的结果。推荐的那个网址也很不错哦,强烈建议大家去捧场
因此,目前可用的两个方法,一是用split,二是 <KEY>((.|\n)*?)((?=<KEY>)|$)
<KEY>((.|\n)*?)((?=<KEY>)|$)
最后谢谢各位热心帮助
Ivony
2006-08-29
打赏
举报
回复
单行模式是将多行视为单行,多行模式是将每一行视为单独的字符串。
www_123du_com
2006-08-29
打赏
举报
回复
看看我的呵呵
GoogleDotNet
2006-08-28
打赏
举报
回复
<KEY>[\W\w]*?<KEY>[\W\w]*?<KEY>
在*后面加个?匹配最短串
chinadforce
2006-08-28
打赏
举报
回复
关注
didi_hb_005
2006-08-28
打赏
举报
回复
up
---------------------------------------------------------------------------------------------
腰缠70元到月入近10万
http://www.hunbei.com.cn/Article/ArticleShow.asp?ArticleID=453
IT工程师 毕业4年我年薪涨到30万
http://www.hunbei.com.cn/Article/ArticleShow.asp?ArticleID=511
26岁青年坐拥千万域名资产 从小玩家变成CEO
http://www.hunbei.com.cn/Article/ArticleShow.asp?ArticleID=515
程序员的酸甜苦辣:告别Coding
http://www.hunbei.com.cn/Article/ArticleShow.asp?ArticleID=341
从月薪3500到700万(一)
http://www.hunbei.com.cn/Article/ArticleShow.asp?ArticleID=170
网络草根月赚3000的十种方法
http://www.hunbei.com.cn/Article/ArticleShow.asp?ArticleID=517
如果我是女的 我肯定不会嫁给做网站的
http://www.hunbei.com.cn/Article/ArticleShow.asp?ArticleID=512
mike77
2006-08-28
打赏
举报
回复
Multiline标志已经用了,关键在于如果用<KEY>[\W\w]*<KEY>来匹配的话,由于“贪婪”算法会匹配第一个<KEY>到最后一个<KEY>的所有内容,也许有更巧妙的办法,请lxhvc() 兄明示
daishengs
2006-08-28
打赏
举报
回复
嘿嘿,我只知道,如果指定了Multiline属性,可以进行跨行的。
ywz65567
2006-08-28
打赏
举报
回复
这样子应该可以吧?你去试一下
string s = "<key>\naaa\nbbb\n<key>\nccc\nddd\n<key>\neee\nfff";
Regex re = new Regex("<key>\n");
string [] rString = re.Split(s);
GoogleDotNet
2006-08-28
打赏
举报
回复
那就手工来出来,用 String.SubString()
fds2003
2006-08-28
打赏
举报
回复
帮顶!
Ivony
2006-08-28
打赏
举报
回复
楼主的结果也不知道怎么出来的,这里应该用单行模式!
真是乱七八糟……
@"<key>.*?</key>"
然后用Regex.Matches方法
cancerser
2006-08-28
打赏
举报
回复
string[] array = null;
try {
array = Regex.Split(yourStr, "<KEY>\r\n");
} catch{}
www_123du_com
2006-08-28
打赏
举报
回复
string str = "(?<=<KEY>).*?(?=(<KEY>|$))";
string str2 = "<KEY>\r\ncccc\r\ndddd\r\n<KEY>\r\nffff\r\ngggg\r\n<KEY>\r\nhhhh\r\niiii";
MatchCollection mc = Regex.Matches(str2,str,RegexOptions.Singleline);
foreach (Match m in mc)
{
string s6 = m.Value.Trim();
}
www_123du_com
2006-08-28
打赏
举报
回复
lxhvc() ( ) 信誉:100 Blog 2006-08-27 23:46:00 得分: 0
Multiline
m
指定多行模式。更改 ^ 和 $ 的含义,以使它们分别与任何行的开头和结尾匹配,而不只是与整个字符串的开头和结尾匹配。
_____________________________
这里不应该指定Multiline标志。
jingtao_zhou
2006-08-28
打赏
举报
回复
System.Text.RegularExpressions.Regex reg=new Regex(@"(?<=(<key>))[\s\S]+?(?=(<key>))");
dlzhangln
2006-08-28
打赏
举报
回复
同意楼上
加载更多回复(5)
数据处理救星降世Power Query
0/ Excel数据处理新利器来了,准备好了吗?1/ 比网红函数VLOOKUP还全面的功能。——查(查询)2/ 取其精华,去其糟粕。——筛(筛选)3/ 拆分就像同学会,拆散一对是一对。——拆(拆分)4/ 天下大势,合久必分,分久必合。——合(合并)5/ 隔空取物,犹如探囊取物——提(提取)6/ 百转千回后的峰回路转。——转(转换)7/ 它判断真假的唯一标准。——判(判断)8/ 人以群分,物以类聚。——聚(聚合)9/ 我自己的难题自己造函数,不
求教
别人。——技法(自定义函数)
JavaScript技术
● &运算符_1.htm● ·JavaScript的脆弱性_1.htm● ·JavaScript技巧环绕三维文字_1.htm● ·JavaScript时间显示三大心法_1.htm● ·Javascript特效欣赏(一)飘雪_1.htm● ·Java技巧(一)会变色的超链接_1.htm● ·弹出式说明窗口---JavaScript的使用_1.htm● ·第八讲WEB页面信息交互_1.htm● ·第二
sed学习笔记
1. Sed简介2. 定址3. Sed命令4. 选项5. 元字符集6. 实例7. 脚本8. 小技巧1. Sed简介sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非
C++各大有名库的介绍——STL、Boost、STLport
http://italks.diandian.com/post/2013-01-16/40047993940 在C++中,库的地位是非常高的。C++之父 Bjarne Stroustrup先生多次表示了设计库来扩充功能要好过设计更多的语法的言论。现实中,C++的库门类繁多,解决的问题也是极其广泛,库从轻量级到重 量级的都有。不少都是让人眼界大开,亦或是望而生叹的思维杰作。由于库的数
【Java学习全家桶】1460道Java热门问题,阿里百位技术专家答疑解惑
原文链接:点击打开链接阿里极客公益活动:或许你挑灯夜战只为一道难题或许你百思不解只求一个答案或许你绞尽脑汁只因一种未知那么他们来了,阿里系技术专家来云栖问答为你解答技术难题了他们用户自己手中的技术来帮助用户成长本次活动特邀百位阿里技术专家对Java常见问题进行了集中解答,在短短3天时间专家回答了1460道Java问题如何学习Java作为一个java学习者,重复写轮子是否必要 https://yq....
C#
110,571
社区成员
642,568
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章