ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 7482|回复: 17

[求助] 求教正则表达式:怎样匹配包含有某特定字符的一整句话?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2012-4-10 14:49 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
求教正则表达式:怎样匹配包含有某特定字符的一整句话?

不知道我表达明白没有,希望在某一篇文章里,搜索含有某特定字符的一整句话,把所有含有该字符的整句话都提取出来。

如:搜索以下文章里,所有包含“之”子的句子,并提取完整的句子出来。

==============================

空空道人遂向石头说道:“石兄,你这一段故事,据你自己说有些趣味,故编写在此,意欲问世传奇.据我看来,第一件,无朝代年纪可考,第二件,并无大贤大忠理朝廷治风俗的善政,其中只不过几个异样女子,或情或痴,或小才微善,亦无班姑,蔡女之德能.我纵抄去,恐世人不爱看呢。”石头笑答道:“我师何太痴耶!若云无朝代可考,今我师竟假借汉唐等年纪添缀,又有何难?但我想,历来野史,皆蹈一辙,莫如我这不借此套者,反倒新奇别致,不过只取其事体情理罢了,又何必拘拘于朝代年纪哉!再者,市井俗人喜看理治之书者甚少,爱适趣闲文者特多.历来野史,或讪谤君相,或贬人妻女,奸凶恶,不可胜数.更有一种风月笔墨,其秽污臭,屠毒笔墨,坏人子弟,又不可胜数.至若佳人才子等书,则又千部共出一套,且其中终不能不涉于滥,以致满纸潘安,子建,西子,文君,不过作者要写出自己的那两首情诗艳赋来,故假拟出男女二人名姓,又必旁出一小人其间拨乱,亦如剧中之小丑然.且鬟婢开口即者也之乎,非文即理.故逐一看去,悉皆自相矛盾,大不近情理之话,竟不如我半世亲睹亲闻的这几个女子,虽不敢说强似前代书中所有之人,但事迹原委,亦可以消愁破闷,也有几首歪诗熟话,可以喷饭供酒.至若离合悲欢,兴衰际遇,则又追踪蹑迹,不敢稍加穿凿,徒为供人之目而反失其真传者.今之人,贫者日为衣食所累,富者又怀不足之心,纵然一时稍闲,又有贪恋色,好货寻愁之事,那里去有工夫看那理治之书?所以我这一段故事,也不愿世人称奇道妙,也不定要世人喜悦检读,只愿他们当那醉饱卧之时,或避世去愁之际,把此一玩,岂不省了些寿命筋力?就比那谋虚逐妄,却也省了口舌是非之害,腿脚奔忙之苦.再者,亦令世人换新眼目,不比那些胡牵乱扯,忽离忽遇,满纸才人淑女,子建文君红娘小玉等通共熟套之旧稿.我师意为何如?”

===========================
我的思路是,首先搜索字符“之”,然后用函数,从字符“之”往前、往后匹配,直到往前、往后都找不到汉字或字母或数字为止,然后复制此字符串到一个单元格,以此类推。
可是程序如何写呢?
假定:上面那段文章都位于单元格A1中。

请老师帮忙!

TA的精华主题

TA的得分主题

发表于 2012-4-10 15:21 | 显示全部楼层
把原内容复制粘贴到word查找   ,([一-鑿]@之[一-鑿]@),    ,即可查找到楼主要求的那样,然会通过多其设置格式或其他方法搞定

TA的精华主题

TA的得分主题

发表于 2012-4-10 15:01 | 显示全部楼层
不知道 EXCEL 是干什么的?

TA的精华主题

TA的得分主题

发表于 2012-4-10 15:58 | 显示全部楼层
weist123 发表于 2012-4-10 15:38
句首:从字符“之”开始,向前数,第一个非“汉字、英文、数字”的字符。

句末:从字符“之”开始,向 ...

Sub doryan()
Dim Reg As New RegExp
With Reg
.Global = True
.Pattern = "(([\u4e00-\u9fa5])|([0-9a-zA-Z]))*" & "之" & "(([\u4e00-\u9fa5])|([0-9a-zA-Z]))*"
Set M = .Execute(Sheet1.[a1])
End With
End Sub

引用Microsoft VBScript Regular Expressions 1.0 正则式
我也是初学者 所以代码很罗嗦

TA的精华主题

TA的得分主题

发表于 2012-4-10 15:12 | 显示全部楼层
判定句子首尾的标志呢?  句号还是逗号 还是其他都可以啊

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-4-10 15:49 | 显示全部楼层
小花鹿 发表于 2012-4-10 15:01
不知道 EXCEL 是干什么的?

因为excel有强大的函数和vba,加之大家也熟悉,故希望可以用一段vba达到目的。谢谢老师关注!

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-4-10 15:38 | 显示全部楼层
doryan 发表于 2012-4-10 15:12
判定句子首尾的标志呢?  句号还是逗号 还是其他都可以啊

句首:从字符“之”开始,向前数,第一个非“汉字、英文、数字”的字符。

句末:从字符“之”开始,向后数,第一个非“汉字、英文、数字”的字符。

谢谢您!

TA的精华主题

TA的得分主题

发表于 2012-4-10 16:40 | 显示全部楼层
本帖最后由 Zamyi 于 2012-4-10 17:10 编辑

"[\d\w\u4e00-\u9fa5]*子[\d\w\u4e00-\u9fa5]*"
不清楚"([\d\w\u4e00-\u9fa5]*)子\1"为什么不行?

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-4-10 16:45 | 显示全部楼层
本帖最后由 weist123 于 2012-4-10 16:47 编辑

谢谢,我“引用”了Microsoft VBScript Regular Expressions 1.0后不报错了。

怎么输出运行的结果呢,例如把匹配的结果输出到单元格?

怎样用那个M?

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-4-10 16:32 | 显示全部楼层
本帖最后由 weist123 于 2012-4-10 16:42 编辑

多谢楼上!

用户定义类型未定义?
excel 2003报错!

As New RegExp是什么类型呢?

======================
改成下面的问题解决:

Dim Reg As Object
Set Reg = CreateObject("VBSCRIPT.REGEXP")

但怎么输出运行的结果呢,怎样用那个M?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-1-14 03:31 , Processed in 0.029028 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表