[問題] 正規表達式比對問題

看板Python作者 (JimmyG)時間14年前 (2010/10/20 12:12), 編輯推噓1(1012)
留言13則, 4人參與, 最新討論串1/1
想請問一個正規表達的問題 下面這種字串 "text":"gfsha12313fehihiosh@#$%^&*((&{":GFYGGKJGJH", "id":"123456",... 在兩個黃色 " 中間,可以使用各種的符號,英文大小寫,數字 另外在字串後面還有其他不相干的資料 也是由英文大小寫所組成 想請問應該要怎麼利用正規表達抓出出這個字串呢? 想很久想不到方法,每次都會抓到後面的不相干的資料 謝謝了 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.118.155.55

10/20 12:24, , 1F
前後的"不相干的資料"有固定格式嗎?
10/20 12:24, 1F

10/20 13:19, , 2F
兩個黃色"中間有出現一個" 這個不需要escape嗎?
10/20 13:19, 2F

10/20 13:43, , 3F
中間有可能會出現 " 符號,另外後面一個就是,"id"
10/20 13:43, 3F

10/20 13:48, , 4F
" 會被轉成 "
10/20 13:48, 4F

10/20 13:51, , 5F
text 中間的 " 會被轉換成" ,外面的還是 "
10/20 13:51, 5F

10/20 21:18, , 6F
先假設你的字串都是固定格是 key: value.....
10/20 21:18, 6F

10/20 21:19, , 7F
foo = eval("{%s}" % str)['text'] # str 就是你的字串
10/20 21:19, 7F

10/20 21:20, , 8F
foo 就是你要的了....不過我沒用到 regex.....
10/20 21:20, 8F

10/20 22:50, , 9F
還是試不出來,會有一個很怪的 SYNTAX error..
10/20 22:50, 9F

10/20 22:58, , 10F
re.match(r'"text":"(.*)",.*', str).group(1) # str = 字串
10/20 22:58, 10F

10/20 23:25, , 11F
('("text":"[\w\s!@#$%^&*)(_+-}{:{}?\;/]*")')
10/20 23:25, 11F

10/20 23:25, , 12F
我用暴力破解掉了...
10/20 23:25, 12F

10/20 23:35, , 13F
還是謝謝你的幫忙了!
10/20 23:35, 13F
文章代碼(AID): #1ClcmKl3 (Python)
文章代碼(AID): #1ClcmKl3 (Python)