TPerlRegEx如何匹配不包含多个字符的内容

cyradg2008 2014-09-19 09:06:19
在Delphi7中用TPerlRegEx匹配(**)之间的内容,代码如下:
匹配表达式为 \x28\x2A([\w\W]*)\x2A\x29,虽然能匹配(**)之间的内容,但是有个问题,下面的字符串不是预期的匹配,比如

S :='(*';
(*注释*)

匹配出的内容是(*';(*注释*),显然前面的(*是不需要的,请问如何匹配?我的想法是”[匹配(*][匹配不包含(*或*)][匹配包含*)]“,匹配包含多个字符这个好办,但是不匹配多个字符怎么写?因为[^\x28\x2A]的含义是不匹配(或*,而不是同时不匹配(和*
...全文
261 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Mit1208 2014-09-28
  • 打赏
  • 举报
回复
使用RegexTester测试了你的正则表达式,没问题啊!!! 楼主是不是提取的代码是提取的全部内容? RegexTester提取: ';(*注释
cyradg2008 2014-09-22
  • 打赏
  • 举报
回复
再干脆些,有以下两个个字符串 1、'(*AASSBSNNSSS'(*AAS*)*) 2、 DNCNHCNNN(* JHKG (*(*(*AAS*) *)AAAAGHFDDD我*) 有谁能用一个通用的正则表达式,匹配出(*AAS*)?两个字符串中,其实也就是未知字符串中,我只想匹配(**)之间的内容,但是(**)之间不能再同时出现(*两个字符或者不能同时出现*)两个字符。
cyradg2008 2014-09-22
  • 打赏
  • 举报
回复
引用 1 楼 dongmei757 的回复:
写的不是很清楚啊,你的表达式没有什么与'('有关的东西,如果是要提取(**)内的东西,(*注释*)这个是会提取出来,你是不要提取前面的'(*';么?如果这个规律,就替换'(*';这个为空,就可以了 str2 := RegExp1.Replace(str1,'');
那就举个例子:比如字符串为'AA(*'SS(*AAS*),目前匹配的结果是(*'SS(*AAS*),其实我只想匹配(*AAS*),怎么匹配?也就是说(**)之间不能再同时出现(*两个字符或者*)两个字符。
cyradg2008 2014-09-22
  • 打赏
  • 举报
回复
兄弟你想回答问题,你要多少分吧,我付得起我付,付不起也只好作罢。说实在的,我在别的地方问不到我才到这问的,这我真的都不太想问,扔个多少个20分出去,没有一个回答说我不知道还是知道但是分少的,你还算不错哦,至少还开了价!!
cyradg2008 2014-09-22
  • 打赏
  • 举报
回复
引用 7 楼 FlashDance 的回复:
20分的帖子很看出你对问题的重视 帖子的分数,一方面体现你对问题的重视程度,同时也给予回帖人起码的尊重。
呵呵,你要知道,我扔了多少个20分没人回答的,难道要我扔200分还是没人回答?这个坛子什么时候扔出了分没人回答能收回来的?
FlashDance 2014-09-22
  • 打赏
  • 举报
回复
20分的帖子很看出你对问题的重视 帖子的分数,一方面体现你对问题的重视程度,同时也给予回帖人起码的尊重。
cyradg2008 2014-09-22
  • 打赏
  • 举报
回复
引用 5 楼 FlashDance 的回复:
20分太少,加分我告诉你
要多少分?
FlashDance 2014-09-22
  • 打赏
  • 举报
回复
20分太少,加分我告诉你
踏雪无痕 2014-09-20
  • 打赏
  • 举报
回复
都是正则表达式高手啊。。。。。。。。。。。
dongmei757 2014-09-20
  • 打赏
  • 举报
回复
写的不是很清楚啊,你的表达式没有什么与'('有关的东西,如果是要提取(**)内的东西,(*注释*)这个是会提取出来,你是不要提取前面的'(*';么?如果这个规律,就替换'(*';这个为空,就可以了 str2 := RegExp1.Replace(str1,'');

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧