作者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/cn.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