作者sagwow (不是我)
看板Python
標題[問題] 正則匹配不包含的符號
時間Sun Apr 1 10:02:55 2018
大家好,小弟是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://webptt.com/m.aspx?n=bbs/Python/M.1522548180.A.E4D.html
1F:→ stucode: r = s if ':' not in s else None # s = '123:abc' 04/01 10:36
一樓大大的方法我看不太懂@@a
2F:→ s860134: [^:] 04/01 11:30
3F:→ neil987: 如果是只要有冒號就不要 用樓上的in就好了 04/01 11:31
4F:→ s860134: 在[]中 ^前墜代表反向匹配... 你可以在再看一下書@@ 04/01 11:31
6F:→ neil987: 如果要找:在哪裏 用[:]就好了吧 04/01 11:35
7F:→ s860134: 發現這樣會把 123:234 切開 QQ 04/01 12:14
8F:→ s860134: (?:[ ]|^)([^:\s]+)(?!:)\b 取 group(1) 不知道有沒漏 04/01 12:39
9F:→ s860134: 結論上還是像一樓另外篩選比較乾淨簡單 04/01 12:40
10F:推 cutekid: 樓上的解法 123-123:abc 會 match 唷 04/01 13:13
11F:推 s860134: (?:[ ]|^)([^:\s]+)(?!:)(?=\s|$) 04/01 16:48
12F:→ s860134: 好像越弄越肥越看不懂惹... 04/01 16:48
13F:→ s860134: (?:[ ]|^)([^:\s]+)(?=\s|$) 斷言找頭找尾好像就可以 04/01 16:49
14F:→ coeric: if re.search(':',string)==None:print string 04/01 20:56
15F:→ coeric: 是我誤會了原意,還是? 04/01 20:57
感謝大家提供的方法,待我一一試過
※ 編輯: sagwow (123.195.13.230), 04/01/2018 22:11:29
16F:→ stucode: 那句的意思是,如果字串 s 中不包含冒號就把 s 賦值給 04/01 22:51
17F:→ stucode: 變數 r,否則就把 r 設為 None。s 是你要搜尋的任意字串 04/01 22:51
18F:→ stucode: 就是文中第三句描述的功能。不過重新看了一下內文,你想 04/01 22:51
19F:→ stucode: 要的是把字串中的冒號去掉嗎? 04/01 22:52