RegExp 板


LINE

※ 引述《PurpleCrow (阿乐)》之铭言: : ※ 引述《ccbruce (今、そこに いる仆)》之铭言: : : 我是用.net的Regex的 : : 现在想要写一个可以删掉所有C/C++ Style comment的程式 : : 而且不可以删掉包在双引号内的类似注解的字串 : : 现在用的pattern为: : : (?!")((//.*)|((?s)(/\*.*?\*/)))(?<!") : : 虽然可以找出单行跟多行注解, 不过包在字串里的类似注解的字串也一起被找出来了 : : 请问有什麽解决的方法吗? : : 正常: : : //comment : : "aaa" //comment : : /* : : comment : : */ : : "aaa" /* : : comment : : */ : : 异常: : : "//not comment" : : "/*not comment" : 总算看懂了 : 编号一下 : //comment1 : "aaa" //comment2 : /* : comment3 : */ : "aaa" /* : comment4 : */ : "//not comment5" : "/*not comment6" : (?<!")(//[^\n]+|/\*.*?\*/) : 得 : //comment1 : //comment2 : /* : comment3 : */ : /* : comment4 : */ : 是这个意思吗? 我的意思是, 用以下的内容去测我的pattern //comment "aaa" //comment /* comment */ "aaa" /* comment */ "//not comment" "/*not comment*/" 结果是, 不论红字还是蓝字, 都被砍光了。因为它们都被match到了。 那麽, 要怎麽修改pattern才能让我的程式不会砍到蓝字部份呢? 因为没办法用上面的pattern来找出正确的注解, 所以现在的作法很糟, 如以下程式码: 先找出所有的字串跟注解, 然後一块块去看, 只要是字串就跳过, 注解才取代。 String^ newline_evaluator(Match^ m) { String ^ret=L""; IEnumerator ^e=m->Value->GetEnumerator(); while(e->MoveNext()) { Char ^ch=(Char ^)e->Current; if(!ch->CompareTo(L'\n')) ret+=L'\n'; } return ret; } String^ passstr_evaluator(Match^ m) { if(m->Value[0]==L'\"') return m->Value; return newline_evaluator(m); } ... ... ... String ^raw=nullptr; MatchEvaluator ^peval=gcnew MatchEvaluator(passstr_evaluator); ... ... ... raw=Regex::Replace(raw, L"(?s)\"[^\"]*\"|(?-s)//.*|(?s)/\\*.*?\\*/", peval); --               裸になって                                                   何が悪い?      --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.163.20.247 ※ 编辑: ccbruce 来自: 118.163.20.247 (08/15 17:29) ※ 编辑: ccbruce 来自: 118.163.20.247 (08/15 17:39) ※ 编辑: ccbruce 来自: 118.163.20.247 (08/15 17:42)
1F:→ PurpleCrow:我的pattern不是没选到蓝字部分吗? @ @ 08/15 19:08







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:BabyMother站内搜寻

TOP