[問題] 正則匹配不包含的符號

看板Python作者 (不是我)時間7年前 (2018/04/01 10:03), 7年前編輯推噓2(2017)
留言19則, 5人參與, 7年前最新討論串1/1
大家好,小弟是Python新手,最近在學爬蟲遇到了一些問題。 我想在搜尋任意字串,字串內容不確定, 只想要字串內有":(冒號)"的就不回傳,若字串不含冒號,就回傳整個字串。 我試了很多方法都沒辦法得到我想要的結果QQ 像是我用print(re.search(r'.*?(?!:).*?$','123:abc')) 第一組.*?和第二組.*?分別表示冒號前後的任意字串,然後中間(?!:)想排除掉冒號。 但是得到的結果是<_sre.SRE_Match object; span=(0, 7), match='123:abc'> 無法排除掉QQ 麻煩大家解答了,感恩<(__ __)> -- ╭─╮ ──╮ ╭─┤╭╮ ╭╭─╮╮ ╭ │ │ │ ││││││ ││││ ╰─╮ ╭─┼╮╰─┼╯││││○││││ │ │ ││ │ ││││ ││││ ╰─╯ ╰─╯╰──╯ ╰╰╯╰─╯╰╯╯ 傻瓜,我們都一樣~~ ψsagwow -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.250.24.209 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1522548180.A.E4D.html

04/01 10:36, 7年前 , 1F
r = s if ':' not in s else None # s = '123:abc'
04/01 10:36, 1F
一樓大大的方法我看不太懂@@a

04/01 11:30, 7年前 , 2F
[^:]
04/01 11:30, 2F

04/01 11:31, 7年前 , 3F
如果是只要有冒號就不要 用樓上的in就好了
04/01 11:31, 3F

04/01 11:31, 7年前 , 4F
在[]中 ^前墜代表反向匹配... 你可以在再看一下書@@
04/01 11:31, 4F

04/01 11:33, 7年前 , 5F
https://regex101.com/#python 這網站玩玩看八
04/01 11:33, 5F

04/01 11:35, 7年前 , 6F
如果要找:在哪裏 用[:]就好了吧
04/01 11:35, 6F

04/01 12:14, 7年前 , 7F
發現這樣會把 123:234 切開 QQ
04/01 12:14, 7F

04/01 12:39, 7年前 , 8F
(?:[ ]|^)([^:\s]+)(?!:)\b 取 group(1) 不知道有沒漏
04/01 12:39, 8F

04/01 12:40, 7年前 , 9F
結論上還是像一樓另外篩選比較乾淨簡單
04/01 12:40, 9F

04/01 13:13, 7年前 , 10F
樓上的解法 123-123:abc 會 match 唷
04/01 13:13, 10F

04/01 16:48, 7年前 , 11F
(?:[ ]|^)([^:\s]+)(?!:)(?=\s|$)
04/01 16:48, 11F

04/01 16:48, 7年前 , 12F
好像越弄越肥越看不懂惹...
04/01 16:48, 12F

04/01 16:49, 7年前 , 13F
(?:[ ]|^)([^:\s]+)(?=\s|$) 斷言找頭找尾好像就可以
04/01 16:49, 13F

04/01 20:56, 7年前 , 14F
if re.search(':',string)==None:print string
04/01 20:56, 14F

04/01 20:57, 7年前 , 15F
是我誤會了原意,還是?
04/01 20:57, 15F
感謝大家提供的方法,待我一一試過 ※ 編輯: sagwow (123.195.13.230), 04/01/2018 22:11:29

04/01 22:51, 7年前 , 16F
那句的意思是,如果字串 s 中不包含冒號就把 s 賦值給
04/01 22:51, 16F

04/01 22:51, 7年前 , 17F
變數 r,否則就把 r 設為 None。s 是你要搜尋的任意字串
04/01 22:51, 17F

04/01 22:51, 7年前 , 18F
就是文中第三句描述的功能。不過重新看了一下內文,你想
04/01 22:51, 18F

04/01 22:52, 7年前 , 19F
要的是把字串中的冒號去掉嗎?
04/01 22:52, 19F
文章代碼(AID): #1Qm3tKvD (Python)
文章代碼(AID): #1Qm3tKvD (Python)