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

請輸入看板名稱,例如:Soft_Job站內搜尋

TOP