正则匹配的大问题
时间:2011-06-08
来源:互联网
再接刚才那个正则小问题:
现在要匹配一串长字符中的[...]中的内容,但[...]只是包含在以C1开头和RP结尾的子字符串中,并将其替换为空字符。
以C1开头和RP结尾的子字符串会出现多次。
如下:
C1 [Pillai, Vijayamohanan K.] CECRI Chennai Ctr, Taramanii 600113, India.[Kannan, Ramaiyan; Kagalwala, Husain N.; Chaudhari, Harshal D.; Kharul, Ulhas K.; Kurungot, Sreekumar] Natl Chem Lab, Div Phys Chem, Pune 411008, Maharashtra, India. RP 863 Program [2009AA0-SZ423]; National Science Foundation of China PBI membrane (530 mW cm(-2)).C1 [Suryani; Chang, Chia-Ming; Liu, Ying-Ling] Chung Yuan Christian Univ, Dept Chem Engn, Tao Yuan 32023, Taiwan.[Suryani; Chang, Chia-Ming; Liu, Ying-Ling] Chung Yuan Christian Univ, R&D Ctr Membrane Technol, Tao Yuan 32023, Taiwan.[Lee, Young Moo] Hanyang Univ, WCU Dept Energy Engn, Coll Engn, Seoul 133791, South Korea. RP
转变成:
C1 CECRI Chennai Ctr, Taramanii 600113, India. Natl Chem Lab, Div Phys Chem, Pune 411008, Maharashtra, India. RP 863 Program [2009AA0-SZ423]; National Science Foundation of China PBI membrane (530 mW cm(-2)).C1 Chung Yuan Christian Univ, Dept Chem Engn, Tao Yuan 32023, Taiwan. Chung Yuan Christian Univ, R&D Ctr Membrane Technol, Tao Yuan 32023, Taiwan. Hanyang Univ, WCU Dept Energy Engn, Coll Engn, Seoul 133791, South Korea. RP
这是本人初步写的,效果不理想,在C1和RP间只匹配了一个[...]中的内容。
VBScript code
还请大家不吝赐教。
现在要匹配一串长字符中的[...]中的内容,但[...]只是包含在以C1开头和RP结尾的子字符串中,并将其替换为空字符。
以C1开头和RP结尾的子字符串会出现多次。
如下:
C1 [Pillai, Vijayamohanan K.] CECRI Chennai Ctr, Taramanii 600113, India.[Kannan, Ramaiyan; Kagalwala, Husain N.; Chaudhari, Harshal D.; Kharul, Ulhas K.; Kurungot, Sreekumar] Natl Chem Lab, Div Phys Chem, Pune 411008, Maharashtra, India. RP 863 Program [2009AA0-SZ423]; National Science Foundation of China PBI membrane (530 mW cm(-2)).C1 [Suryani; Chang, Chia-Ming; Liu, Ying-Ling] Chung Yuan Christian Univ, Dept Chem Engn, Tao Yuan 32023, Taiwan.[Suryani; Chang, Chia-Ming; Liu, Ying-Ling] Chung Yuan Christian Univ, R&D Ctr Membrane Technol, Tao Yuan 32023, Taiwan.[Lee, Young Moo] Hanyang Univ, WCU Dept Energy Engn, Coll Engn, Seoul 133791, South Korea. RP
转变成:
C1 CECRI Chennai Ctr, Taramanii 600113, India. Natl Chem Lab, Div Phys Chem, Pune 411008, Maharashtra, India. RP 863 Program [2009AA0-SZ423]; National Science Foundation of China PBI membrane (530 mW cm(-2)).C1 Chung Yuan Christian Univ, Dept Chem Engn, Tao Yuan 32023, Taiwan. Chung Yuan Christian Univ, R&D Ctr Membrane Technol, Tao Yuan 32023, Taiwan. Hanyang Univ, WCU Dept Energy Engn, Coll Engn, Seoul 133791, South Korea. RP
这是本人初步写的,效果不理想,在C1和RP间只匹配了一个[...]中的内容。
VBScript code
<% Dim txtStr,oStr oStr = "C1 [Pillai, Vijayamohanan K.] CECRI Chennai Ctr, Taramanii 600113, India.[Kannan, Ramaiyan; Kagalwala, Husain N.; Chaudhari, Harshal D.; Kharul, Ulhas K.; Kurungot, Sreekumar] Natl Chem Lab, Div Phys Chem, Pune 411008, Maharashtra, India. RP" txtStr = filterStr(oStr) Response.Write "transform str:<br />"& oStr & "<br />" Response.Write "transformed str:<br /><font color=red>"& txtStr &"</font>" Response.End Function filterStr(txt) Set re = New regExp re.pattern = "(^C1\s)(?:\[.*?\])+(.*?)(\sRP$)" re.global = True re.IgnoreCase = True re.MultiLine = True filterStr = re.Replace(txt,"$1$2$3") End Function %>
还请大家不吝赐教。
作者: whlib 发布时间: 2011-06-08
顶一下
作者: whlib 发布时间: 2011-06-08
ASP不熟悉,你试下看看吧:
VBScript code
VBScript code
Function filterStr(txt) Set re = New regExp re.pattern = "(C1\s+)(([^\[]*?)\[.*?\]([^\]]*?))+(.*?\s+RP)" re.global = True re.IgnoreCase = True re.MultiLine = True filterStr = re.Replace(txt,"$1$3$4$5") End Function
作者: fengyun817 发布时间: 2011-06-08
引用 2 楼 fengyun817 的回复:
ASP不熟悉,你试下看看吧:
VBScript code
Function filterStr(txt)
Set re = New regExp
re.pattern = "(C1\s+)(([^\[]*?)\[.*?\]([^\]]*?))+(.*?\s+RP)"
re.global = True
re.IgnoreCase = Tru……
ASP不熟悉,你试下看看吧:
VBScript code
Function filterStr(txt)
Set re = New regExp
re.pattern = "(C1\s+)(([^\[]*?)\[.*?\]([^\]]*?))+(.*?\s+RP)"
re.global = True
re.IgnoreCase = Tru……
还是有点问题,只匹配了第二个C1的第二个[]后的字符串。
匹配结果如下:
C1 Chung Yuan Christian Univ, R&D Ctr Membrane Technol, Tao Yuan 32023, Taiwan. Hanyang Univ, WCU Dept Energy Engn, Coll Engn, Seoul 133791, South Korea. RP
作者: whlib 发布时间: 2011-06-08
VBScript code
<% Dim txtStr,oStr oStr = "C1 [Pillai, Vijayamohanan K.] CECRI Chennai Ctr, Taramanii 600113, India.[Kannan, Ramaiyan; Kagalwala, Husain N.; Chaudhari, Harshal D.; Kharul, Ulhas K.; Kurungot, Sreekumar] Natl Chem Lab, Div Phys Chem, Pune 411008, Maharashtra, India. RP 863 Program [2009AA0-SZ423]; National Science Foundation of China PBI membrane (530 mW cm(-2)).C1 [Suryani; Chang, Chia-Ming; Liu, Ying-Ling] Chung Yuan Christian Univ, Dept Chem Engn, Tao Yuan 32023, Taiwan.[Suryani; Chang, Chia-Ming; Liu, Ying-Ling] Chung Yuan Christian Univ, R&D Ctr Membrane Technol, Tao Yuan 32023, Taiwan.[Lee, Young Moo] Hanyang Univ, WCU Dept Energy Engn, Coll Engn, Seoul 133791, South Korea. RP" txtStr = filterStr(oStr) Response.Write "transform str:<br />"& oStr & "<br />" Response.Write "transformed str:<br /><font color=red>"& txtStr &"</font>" Response.End Function filterStr(ByVal txt) Set re = New regExp re.pattern = "C1\s([\s\S]+?)\sRP" re.global = True re.IgnoreCase = False re.MultiLine = True Set col = re.Execute(txt) For Each m In col Set re1 = New regExp re1.Global = True re1.IgnoreCase = False re1.MultiLine = True re1.Pattern = "\[[^\]]+\]" t = re1.Replace(m, "") txt = Replace(txt, m, t) Set re1 = Nothing Next Set re = Nothing filterStr = txt End Function %>
作者: hookee 发布时间: 2011-06-08
VBScript code
这样看看合不合你的要求?
Dim txtStr,oStr oStr = "C1 [Pillai, Vijayamohanan K.] CECRI Chennai Ctr, Taramanii 600113, India.[Kannan, Ramaiyan; Kagalwala, Husain N.; Chaudhari, Harshal D.; Kharul, Ulhas K.; Kurungot, Sreekumar] Natl Chem Lab, Div Phys Chem, Pune 411008, Maharashtra, India. RP 863 Program [2009AA0-SZ423]; National Science Foundation of China PBI membrane (530 mW cm(-2)).C1 [Suryani; Chang, Chia-Ming; Liu, Ying-Ling] Chung Yuan Christian Univ, Dept Chem Engn, Tao Yuan 32023, Taiwan.[Suryani; Chang, Chia-Ming; Liu, Ying-Ling] Chung Yuan Christian Univ, R&D Ctr Membrane Technol, Tao Yuan 32023, Taiwan.[Lee, Young Moo] Hanyang Univ, WCU Dept Energy Engn, Coll Engn, Seoul 133791, South Korea. RP" txtStr = filterStr(oStr) Response.Write "transform str:<br />"& oStr & "<br />" Response.Write "transformed str:<br /><font color=red>"& txtStr &"</font>" Response.End Function filterStr(txt) Set re = New regExp re.pattern = "\[.[^\]]+\](?![^\[\]]+C1)" re.global = True re.IgnoreCase = True re.MultiLine = True filterStr = re.Replace(txt,"") End Function
这样看看合不合你的要求?
作者: aspwebchh 发布时间: 2011-06-08
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28