看板 Python 關於我們 聯絡資訊
最近剛開始玩 python 和 regular expression 有點小小的問題想請教大家 當我想要找出字串中是否有{}內的pattern的時候 MyContent{4348be18 G.E..... ......I. 0,0-0,0 #7f08005f app:id/module_name} 嚴謹一點我知道要每個部分去做parsing 現在先簡單一點, 想判斷只要 {} 內不要有不該出現的內容就算符合 (ex.不要有問號) 奇怪的是 case1 p = re.compile("{[,_#a-zA-Z0-9:. /-]+}") 這樣就可以正確抓出{}的頭尾 但 case2 p = re.compile("{[#a-zA-Z0-9:. /-_,]+}") 就抓不出{}的位置 這兩種寫法只差在 _ 和 , 的位置 甚至 case3 p = re.compile("{[#a-zA-Z0-9:. /-,_]+}") 執行就會有錯誤 sre_constants.error: bad character range 抱歉打錯了, case 3 和 case2 差在逗號的位置 想請問大家 1. case2 為什麼不行 case1卻可以 2. case3 為什麼會有這樣的錯誤 感謝感謝~~~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.61.82.125
ya790206:看 http://docs.python.org/2/library/re.html 的[] 解釋 09/10 21:35
ya790206:關鍵在 - 09/10 21:36
fjm31714:在正規表示法裡[]裡面如果 - 不是要代表範圍最好放在最前 09/10 21:44
uranusjr:我覺得重點是不管你放哪裡最好都要 escape... 09/10 22:05
darkgerm:-要跳脫 09/10 23:35
ck574b027:你 case2 和 case3 用的字串不是一樣嗎? 09/11 00:09
※ 編輯: monkey12 來自: 210.61.82.125 (09/11 10:58)
monkey12:感謝各位的回答 我修改了一下 case3 09/11 10:59