RegExp 板


LINE

※ 引述《PurpleCrow (紫乌鸦)》之铭言: : ※ 引述《godspeedlee (你,我可以)》之铭言: : : 分成两次来作比较轻松: : : 第一步: 将每个 Question 切割成单独的区块 : : \(Q\d+\)[\s\w]+(\(\d+\)\[[\s*]\][\s\w]+)+ : : 或 : : (?<=\(Q\d+\))(.*?)(?=\(Q\d+\)) : 这个式子会漏掉 : (Q4) Question 4 : (1)[*] Answer 1 for Question 4 : (2)[ ] Answer 2 for Question 4 : (3)[ ] Answer 3 for Question 4 : (4)[ ] Answer 4 for Question 4 谢谢,修正如下: (?<=\(Q\d+\))(.*?)(?=\(Q\d+\)|\s*$) : : 第二步: 对每个区块个别进行搜寻 : : \(\d+\)\[\*\][\s\w]+ : (Q3) Question 3 依然无法排除 得 : (1)[*] Answer 1 for Question 3 : (3)[*] Answer 3 for Question 3 抱歉没讲清楚 我的意思是先切割成个别的问题(pattern1),然後再个 别去比对每个(Q#)里面的答案(pattern2),假如成功比 对两次(含)以上,那就是代表重复作答。 所以光靠 pattern2 没办法判断出是否重复作答(抱歉 让大家误以为有这个意思) 假如要 pattern2 不用另外写code去统计次数,下面这个 pattern "也许"可行(不推荐): ^(?:\(\d\)\[\s*\][\s\w]+)*(\(\d\)\[\*\][\s\w]+)(?:\(\d\)\[\s*\][\s\w]+)*$ 更变态一点,跟 pattern1 合体: (非常不推荐) \(Q\d+\)[\s\w]+(?:\(\d\)\[\s*\][\s\w]+)*(\(\d\)\[\*\][\s\w]+)(?:\(\d\)\[\s*\][\s\w]+)*(?=\(Q\d|$) (无从得知重复作答跟没有作答是哪些题目) : : 当然,使用 regexp 常常会有一种冲动想一次解决 :P : 这个题目跟一次解决或分次解决没有关系 : 重点在於有复数个*的无效状况无法排除 当然没有关系,只是比较好作而已 ^_^" -- http://godspeedlee.myweb.hinet.net/ --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 111.80.129.105 ※ 编辑: godspeedlee 来自: 111.80.129.105 (08/10 14:42) ※ 编辑: godspeedlee 来自: 111.80.129.105 (08/10 14:47)
1F:→ godspeedlee:以上 pattern .NET ok,其他语言需要修改 08/10 14:53
2F:→ PurpleCrow:可不可行用RegexBuddy测测不就知道了?答案是不可行 08/10 16:14
3F:→ PurpleCrow:chrisdar後来所提出的式子可一次,结果和你的分次一样 08/10 16:18
4F:→ PurpleCrow:(?<=\(Q(\d+)\).*?)\((\d+)\)\[\*\] 08/10 16:18
5F:→ PurpleCrow:重点还是在於有复数个*的无效状况无法排除 08/10 16:19
6F:→ PurpleCrow:原po想解决的: 08/10 16:22
7F:→ PurpleCrow:1. Q2 因为没有作答 导致把 Q3 的答案带到 Q2 去(pass) 08/10 16:22
8F:→ PurpleCrow:2. Q3 重复作答也无法排除 (待解决) 08/10 16:23
9F:→ godspeedlee:看来不给张图没说服力 08/10 16:51
10F:→ godspeedlee:http://imageshack.us/f/3/pttregex1.jpg/ 08/10 16:51
11F:→ godspeedlee:http://imageshack.us/f/717/pttregex2.jpg/ 08/10 17:00
12F:→ PurpleCrow:阿,抱歉看错了,很长(非常不推荐)那串是ok的 08/10 17:01
13F:→ godspeedlee:http://imageshack.us/f/688/pttregex3.jpg/ 08/10 17:02
14F:→ godspeedlee:忘了提得把(Q#)...拿掉 08/10 17:07
15F:→ godspeedlee:可以将pattern1改为 08/10 17:14
16F:→ godspeedlee:(?<=\(Q\d+\))(?:[\s\w]+)(.*?)(?=\(Q\d+\)|\s*$) 08/10 17:15
17F:→ godspeedlee:http://imageshack.us/f/850/pttregex4.jpg/ 08/10 17:15
18F:→ PurpleCrow:恩,原理一样的,[*]出现一次,前後用[ ]来填 08/10 18:10
19F:→ PurpleCrow:不过(非常不推荐)那串实在太长了,虽说是你的风格 08/10 18:11
20F:→ PurpleCrow:不过令人很难看懂 08/10 18:12
21F:→ PurpleCrow:用[^\*]可以省事很多 08/10 18:20
22F:→ godspeedlee:难懂最大的问题不是长度,而是全缩成一行了 08/10 20:13
23F:→ godspeedlee:教你一个方法,用Free-spacing mode 08/10 20:21
24F:→ godspeedlee:http://imageshack.us/f/27/freespacing.jpg/ 08/10 20:22
25F:→ godspeedlee:这种事也没什麽对错,大家各自对於应该要辨识的东西 08/10 20:23
26F:→ godspeedlee:认知不一样 08/10 20:23
27F:→ godspeedlee:长短自然有所不同 08/10 20:23
28F:→ godspeedlee:照你的方式缩短: 08/10 20:32
29F:→ godspeedlee:(Q\d+\))[^*]*?(\(\d\))\[\*\][^*]*?(?=\(Q|\s*$) 08/10 20:32
30F:→ godspeedlee:group1是题号,group2是选择的答案 08/10 20:33
31F:→ godspeedlee:当然也许你可以更短,也欢迎切磋 08/10 20:34
32F:→ godspeedlee:再短一点: 08/10 20:39
33F:→ godspeedlee:(Q\d+\))[^*]*?(\(\d\))\[\*[^*]*?(?=\(Q|\s*$) 08/10 20:39
34F:→ godspeedlee:短还要更短: 08/10 20:43
35F:→ godspeedlee:(Q\d+\))[^*]*?(\d\))\[\*[^*]*?(?=\(Q|\s*$) 08/10 20:44
36F:→ PurpleCrow:我没有说谁对谁错,只是说太长会难懂(特别是初学者) 08/10 22:02
37F:→ PurpleCrow:不是每个人都有RegexBuddy,不过这张图就很好 08/10 22:03
38F:→ PurpleCrow:可以告诉问题者是怎麽得到解答,而不是直接给予解答 08/10 22:03
39F:→ PurpleCrow:缩到这样就差不多了,我的极限是36个字元两种型式 08/10 22:06
40F:→ PurpleCrow:(1)g1=Q1,g2=3 (2)g1=(3)[*] Answer 3 for Question 1 08/10 22:08
41F:→ godspeedlee:你的立意很好,但是: 08/10 22:28
42F:→ godspeedlee:1.有多少人是初学者? 08/10 22:28
43F:→ godspeedlee:2.有多少人是真的想学还是想直接拿答案去套套看? 08/10 22:28
44F:→ godspeedlee:P.S身为BBS上一个免费的答案提供者,还要考虑到 08/10 22:29
45F:→ godspeedlee:其他乡民的学习能力跟意愿..会不会太...= =" 08/10 22:29
46F:→ PurpleCrow:我反问你 08/10 22:29
47F:→ PurpleCrow:1.有多少人不是初学者? 08/10 22:29
48F:→ PurpleCrow:2.有多少人是真的想学而不是想直接拿答案去套套看? 08/10 22:30
49F:→ godspeedlee:不知道,我也不想预设立场 08/10 22:31
50F:→ PurpleCrow:你想炫技你的签名档有网址,那个判断数字区间的确不错 08/10 22:31
51F:→ godspeedlee:更何况我连板主都不是,我也不住海边 08/10 22:31
52F:→ PurpleCrow:你直接解答等於剥夺别人思考的权利 08/10 22:32
53F:→ PurpleCrow:当然你要怎麽做是你的自由,而我习惯先提示 08/10 22:33
54F:→ godspeedlee:用这麽高的道德标准会不会太夸张了? 08/10 22:33
55F:→ PurpleCrow:真的不想花时间或想不出来我再给他,一样达到助人的目的 08/10 22:34
56F:→ PurpleCrow:不过你总是太急,一开始的解答不是不符题意就是有瑕疵 08/10 22:35
57F:→ godspeedlee:同样一句老话:请问我有收钱吗? 08/10 22:36
58F:→ PurpleCrow:关道德什麽事?我只是叙述一个状态.也说过那是你的自由 08/10 22:36
59F:→ godspeedlee:写错可以纠正我,但是我有我作法的自由,我也不会去 08/10 22:37
60F:→ godspeedlee:批评别人 08/10 22:37
61F:→ PurpleCrow:你是看不懂中文还是..?我没说你不对,何来批评? 08/10 22:42
62F:→ PurpleCrow:我只是叙述一个状态.也说过那是你的自由..很白话吧? 08/10 22:42
63F:→ godspeedlee:说我剥夺别人思考机会这不是批评难道是?? 08/10 22:43
64F:→ PurpleCrow:状态:直接解答等於剥夺别人思考的权利...有错吗? 08/10 22:44
65F:→ PurpleCrow:我有说这样不对吗?也说了那是你的自由..别再跳针ok? 08/10 22:44
66F:→ godspeedlee:大哥,你可以说我写的长,效率差,但是批评我 08/10 22:45
67F:→ godspeedlee:剥夺别人思考机会这就太超过了 08/10 22:45
68F:→ PurpleCrow:写的长是事实,效率好像有专门的软题看我无法评论 08/10 22:47
69F:→ PurpleCrow:我再强调一次,我只叙述一个状态:做了A等於B 08/10 22:48
70F:→ PurpleCrow:我如果说这个状态真是过份,不道德那才叫批评 08/10 22:49
71F:→ godspeedlee:说是我的自由,那就请把您说我剥夺别人思考这句话 08/10 22:51
72F:→ godspeedlee:收回(虽然你觉得没什麽),就像我也从来只针对 08/10 22:51
73F:→ godspeedlee:pattern的写法回应,不会去批评别人的文章有没有 08/10 22:51
74F:→ godspeedlee:教育意义(再提一次,我不是板主,也没收钱 08/10 22:51
75F:→ godspeedlee:您要不要拿这套标准去别的版推文看看?) 08/10 22:51
76F:→ PurpleCrow:ok,ok既然你那麽在意,那我收回 08/10 22:52
77F:→ godspeedlee:是状态还是批评不是你说了算 08/10 22:53
78F:→ PurpleCrow:就当问问题的人都是只想伸手要解答 08/10 22:53
79F:→ godspeedlee:抱歉,我也有点激动,毕竟这样回应很少见 08/10 22:57
80F:→ godspeedlee:通常大家只会反应你的答案是错的 :P 08/10 22:58
81F:→ PurpleCrow:直接解答反而是最好的,而我的做法很可能会被认为是故做 08/10 22:58
82F:→ PurpleCrow:神秘,浪费它们的时间 08/10 22:58
83F:→ PurpleCrow: 他 08/10 22:59
84F:→ godspeedlee:我不是没有想过要多写一些教学跟解释,问题是我不知道 08/11 00:30
85F:→ godspeedlee:要写到多少才算够(不知道大家平均程度,所以不如不写) 08/11 00:31
86F:→ godspeedlee:再说,自从看了两遍Mastering Regular Expression 08/11 00:31
87F:→ godspeedlee:我发现自己不可能解释的比他更好(不只有图解,甚至还 08/11 00:32
88F:→ godspeedlee:算出来某些pattern需要比对几次) 08/11 00:32
89F:→ godspeedlee:题外话:建议板主规定发问时必须提供使用的 08/11 00:41
90F:→ godspeedlee:程式语言或工具,因为各家对regex支援程度不一 08/11 00:41
91F:→ badwork:收到.. 08/11 00:46
92F:→ godspeedlee:这大概创下ptt冷门板推文最长纪录了..囧 08/11 00:48







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灯, 水草

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

TOP