以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 正则式求助 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=148116) |
-- 作者:foxtable1 -- 发布时间:2020/3/31 14:56:00 -- 正则式求助 string="旧报纸是否是可回收物。(?否?)?2.废旧的家具(桌椅、沙发、床垫)是大件垃圾,大件垃圾是否属于干垃圾。(?是?)? 3.旧鞋子属于可回收物。(?否?) ?" 请问如何用正则式匹配(是)与(否),以下代码好像不能全部匹配出来,pattern如何写? dim st as string =="旧报纸是否是可回收物。(?否?)?2.废旧的家具(桌椅、沙发、床垫)是大件垃圾,大件垃圾是否属于干垃圾。(?是?)? 3.旧鞋子属于可回收物。(?否?) ?" dim p as string = ".*(?=\\(\\s*[\\u4e00-\\u9fa5]\\s*\\))" \'Do While len(trim(MyRange.text))>1 Dim rgx = new System.Text.RegularExpressions.Regex(p,System.Text.RegularExpressions.RegexOptions.IgnoreCase) messagebox.show(rgx.Replace(st, ""))
|
-- 作者:foxtable1 -- 发布时间:2020/3/31 14:58:00 -- 以上?处其实为空格 ,发上来后,怎么全变成了问号了 |
-- 作者:有点蓝 -- 发布时间:2020/3/31 15:36:00 -- 说明不是空格,而是其他的特殊字符。要得到什么结果? |
-- 作者:foxtable1 -- 发布时间:2020/3/31 15:53:00 -- 请问要匹配出文字串中的“(是)”与“(否)”,如何写正则表达式,pattern如何写? |
-- 作者:有点蓝 -- 发布时间:2020/3/31 16:31:00 -- 没看出来提取这2个字有什么意义。 Dim st As String ="旧报纸是否是可回收物.(?否?)?2.废旧的家具(桌椅?沙发?床垫)是大件垃圾,大件垃圾是否属于干垃圾.(?是?)? 3.旧鞋子属于可回收物.(?否?) ?" Dim pattern As String = "\\(*.[是|否] *.\\)" Dim rgx = new System.Text.RegularExpressions.Regex(pattern, System.Text.RegularExpressions.RegexOptions.IgnoreCase) For Each match As System.Text.RegularExpressions.Match In rgx.Matches(st) Output.Show(match.Value ) Next |
-- 作者:foxtable1 -- 发布时间:2020/3/31 20:13:00 -- 这个 pattern写法是什么语法?应该是.net的正则语法吧,与vba的一样吧。可是"\\(*.[是|否] *.\\)"写法有点不一样。我的写法“\\(\\s*[\\u4e00-\\u9fa5]\\s*\\))"有什么问题? |
-- 作者:有点蓝 -- 发布时间:2020/3/31 21:20:00 -- foxtable的编程语言是vb.net,就是.net一家的。至于您的写法,我看不懂 |
-- 作者:foxtable1 -- 发布时间:2020/4/1 10:51:00 -- 问题:将word中的文本内容复制出来放到命令窗口中作为字符串测试,For Each match 可以全部输出。 然而,直接引用word文档(如Dim MyRange As object=Doc.content,通过MyRange.text来直接引用文本字符串,For Each match 却失败,没有匹配输出。 |
-- 作者:有点蓝 -- 发布时间:2020/4/1 10:57:00 -- 完整代码? |
-- 作者:foxtable1 -- 发布时间:2020/4/1 11:29:00 -- axWebBrowser = Nothing Dim Doc = vars("doc") Dim Ori() As String = {"\\(*.[是|否] *.\\)"} \'{"(\\( *.*[是|否].* *\\))+?"} \' {".*(?=\\(\\s*[\\u4e00-\\u9fa5]\\s*\\))"} Do While len(MyRange.text)>1 loop |