请问如何用正则表达式提取一句话?

问题描述

比如下面一段词:雨恨云愁,江南依旧称佳丽。水村渔市,一缕孤烟细。天际征鸿,遥认行如缀。平生事,此时凝睇,谁会凭栏意?我想提取含有“孤烟”的句子。也就是“水村渔市,一缕孤烟细"一句。请问如何写正则表达式?实际应用时,孤雁可能出现在文章的最开头,也可能是最后一个词。

解决方案

解决方案二:
.*孤烟.*n
解决方案三:
(?<=。).*?孤烟.*?(?=。)

解决方案四:
引用2楼starfd的回复:

(?<=。).*?孤烟.*?(?=。)

这个不行啊。我就想要两个句号之间的数据。如果诗写在一行中,同时我要提取含有“此时”的句子:“雨恨云愁,江南依旧称佳丽。水村渔市,一缕孤烟细。天际征鸿,遥认行如缀。平生事,此时凝睇,谁会凭栏意?”你的表达式会从第一个句号位置开始匹配:“水村渔市,一缕孤烟细。天际征鸿,遥认行如缀。平生事,此时凝睇,谁会凭栏意”
解决方案五:
(?<=。).*?孤烟.*?(?=。)

这个不会像你说的匹配到“孤烟细。”后面的啊(?<=。).*?孤烟.*?此时.*?(?=。|?)

这个才会匹配“水村渔市,一缕孤烟细。天际征鸿,遥认行如缀。平生事,此时凝睇,谁会凭栏意”
解决方案六:
引用4楼starfd的回复:

(?<=。).*?孤烟.*?(?=。)

这个不会像你说的匹配到“孤烟细。”后面的啊(?<=。).*?孤烟.*?此时.*?(?=。|?)

这个才会匹配“水村渔市,一缕孤烟细。天际征鸿,遥认行如缀。平生事,此时凝睇,谁会凭栏意”

解决方案七:
staticvoidRegexChinese(){stringtxt=@"雨恨云愁,江南依旧称佳丽。水村渔市,一缕孤烟细。天际征鸿,遥认行如缀。平生事,此时凝睇,谁会凭栏意?";varmatch=Regex.Match(txt,@"(?<=。).*?此时.*?(?=。|?)",RegexOptions.RightToLeft);if(match.Success){Console.WriteLine(match.Value);}}

指定从右往左匹配
解决方案八:
引用6楼starfd的回复:

staticvoidRegexChinese(){stringtxt=@"雨恨云愁,江南依旧称佳丽。水村渔市,一缕孤烟细。天际征鸿,遥认行如缀。平生事,此时凝睇,谁会凭栏意?";varmatch=Regex.Match(txt,@"(?<=。).*?此时.*?(?=。|?)",RegexOptions.RightToLeft);if(match.Success){Console.WriteLine(match.Value);}}

指定从右往左匹配

这样的话,匹配“孤烟”又出现错误了。我的需求就是,一个词出现在任意位置都能提取到他所在的那一句话。
解决方案九:
好吧,我给你个终极方案staticvoidRegexChinese(){stringtxt=@"此时雨恨云愁,江南依旧称佳丽。水村渔市,一缕孤烟细。天际征鸿,遥认行如缀。平生事,此时凝睇,谁会凭栏意?此时此时此时";vararr=Regex.Split(txt,"[。?]");foreach(varstrinarr){if(Regex.Match(str,".*?此时.*?").Success){Console.WriteLine(str);}}}

解决方案十:
引用8楼starfd的回复:

好吧,我给你个终极方案staticvoidRegexChinese(){stringtxt=@"此时雨恨云愁,江南依旧称佳丽。水村渔市,一缕孤烟细。天际征鸿,遥认行如缀。平生事,此时凝睇,谁会凭栏意?此时此时此时";vararr=Regex.Split(txt,"[。?]");foreach(varstrinarr){if(Regex.Match(str,".*?此时.*?").Success){Console.WriteLine(str);}}}

应该会有更好的办法吧……~
解决方案十一:
(?<=。)[^。]*?关键字.*?(?=。)

解决方案十二:
(?<=。|?)?[^。|?]*?此时.*?[。|?]

解决方案十三:
楼主你解决了吗?

时间: 2024-09-17 04:43:37

请问如何用正则表达式提取一句话?的相关文章

如何用正则表达式提取字符串?

问题描述 [AL_Child][Cols=2]............[/AL_Child]我有这样一个字符串,用正则表达式怎么样能够提取出[AL_*****]--[/AL_*****]里面的字符串需要提取出来的字符串包括:1,AL_后面(星号)的字符串:2,AL标签里面(省略号)的字符串请大家帮帮忙,谢谢了.Stringsrc=............;//原串Stringstr="[AL\((.*?)\)]([\s\S]*?)[\/AL\((.*?)\)]";Patternp=Pa

正则表达式,提取网页中的链接地址

<td class=cate width="45%" style="word-break:break-all">       <a class=M href="http://jmfengcai.cn.alibaba.com/athena/companydetail/jmfengcai.html" onMouseDown="return aliclick(this,'?alishop=companylistcompany

正则表达式,提取网页中的链接地址_正则表达式

<td class=cate width="45%" style="word-break:break-all">       <a class=M href="http://jmfengcai.cn.alibaba.com/athena/companydetail/jmfengcai.html" onMouseDown="return aliclick(this,'?alishop=companylistcompany

镜像-请问如何用easyboot制作WIN7系统装机盘

问题描述 请问如何用easyboot制作WIN7系统装机盘 1C 我在网上查了许多材料发现版本太多了不知道用哪一个也不知道适不适用于WIN7系统盘的制作.我目前所准备的工具如下:1.EASYBOOT 5.1.0.5652.img文件:DISKGENIUS.DM10.ghost.MEMTEST.PQ805CHT.红叶DOS工具箱2010年升级3.win7.bif 从网上下的,在某资料中看到,不知道有什么作用,也不知道这个文件是否需要编辑.4.gho文件:从雨林木风下的ISO文件,提取其中的win7

在sharepoint2013中如何用正则表达式实现模糊查询文档或图片?语言是C#

问题描述 在sharepoint2013中如何用正则表达式实现模糊查询文档或图片?语言是C# 比如***.jpg或者***.word,要使搜索一个字或者两个字的时候就能查询,类似于这种一句话的表达式(?^|[^#]*[s])#(([[](?[^..,.agname>[^...请大家帮帮忙,本人没有接触过编程不懂,要是能解决此类难题,我会非常感激的,谢谢.

请问如何用正则匹配字符

问题描述 请问如何用正则匹配由数字.26个英文字母.下划线和或者左斜杆组成的字符? 解决方案 解决方案二:Strings="123a_/haha";System.out.println(s.matches("[\d\w_/]+")); [\d\w_/]+解决方案三:该回复于2010-10-26 10:37:12被版主删除解决方案四:这才是正解:System.out.println("/aqa".matches("(\w|/)*"

请问如何识别并提取日志中类似”五月 05, 2014 2:59:10 下午”的时间格式?

问题描述 请问如何识别并提取日志中类似"五月 05, 2014 2:59:10 下午"的时间格式?请帮忙提供解决方法,谢谢! 解决方案 可以使用SimpleDateFormat的格式化功能,他既可以格式化日期为指定的格式,也可以从指定的格式字符串中解析出日期对象来,代码示例如下: SimpleDateFormat sdf = new SimpleDateFormat("MMM dd, yyyy h:mm:ss a",Locale.CHINA); String tes

在.NET2003下如何用正则表达式

问题描述 请问一下在.NET2003下如何用正则表达式来验证一个文字输入框里面的内容,只用代码,不用验证控件 解决方案 解决方案二:regex.ismatch(text1.value,@"^......$");解决方案三:regex.ismatch(text1.value,@"^......$");

PHP用正则表达式提取网页链接地址

如下面代码,用正则表达式提取其中的链接地址 以下是引用片段:<div class="pic" id="s3"> <a title=list href="http://www.alixixi.com/down/" target="_blank">阿里西 西源码下载频道</a> <a href="http://js.alixixi.com/" target="