[問題] Regular Expression 相關

看板Python作者 (猴仔)時間12年前 (2013/09/10 21:30), 編輯推噓1(106)
留言7則, 6人參與, 最新討論串1/1
最近剛開始玩 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

09/10 21:35, , 1F
09/10 21:35, 1F

09/10 21:36, , 2F
關鍵在 -
09/10 21:36, 2F

09/10 21:44, , 3F
在正規表示法裡[]裡面如果 - 不是要代表範圍最好放在最前
09/10 21:44, 3F

09/10 22:05, , 4F
我覺得重點是不管你放哪裡最好都要 escape...
09/10 22:05, 4F

09/10 23:35, , 5F
-要跳脫
09/10 23:35, 5F

09/11 00:09, , 6F
你 case2 和 case3 用的字串不是一樣嗎?
09/11 00:09, 6F
※ 編輯: monkey12 來自: 210.61.82.125 (09/11 10:58)

09/11 10:59, , 7F
感謝各位的回答 我修改了一下 case3
09/11 10:59, 7F
文章代碼(AID): #1IBnxagC (Python)
文章代碼(AID): #1IBnxagC (Python)