a = 'like/a2bc3d?param' b = 'comment/a2bc3d?param'
re.compile(r'(?<=like/).*?(?=\?)')
这种我会写。like/a2bc3d
,然后再切一次。![]() | 1 jdhao 2019-10-21 21:21:36 +08:00 via Android capture group? 你这模式都是一致的 |
![]() | 2 JCZ2MkKb5S8ZX9pq OP @jdhao 请问怎么搞? 因为实际案例中,后面的 params 是一直在变的,而前缀是限定的几种。 |
![]() | 3 imn1 2019-10-21 22:04:52 +08:00 ([^/]+/)([^/\?]+)\?.*$ |
![]() | 4 lululau 2019-10-21 22:07:16 +08:00 '(?<=like/|comment/).*?(?=\?)' |
![]() | 5 ClericPy 2019-10-21 22:18:10 +08:00 ![]() 虽然你发在 正则 node... 但这种东西为什么要用正则呢... a = 'like/a2bc3d?param' b = 'comment/a2bc3d?param' import os print(os.path.split(a)) print(os.path.split(b)) # ('like', 'a2bc3d?param') # ('comment', 'a2bc3d?param') a = 'like/a2bc3d?param' b = 'comment/a2bc3d?param' import re pattern = r'(?:like|comment)/(.*?)\?' print(re.search(pattern, a).group(1)) print(re.search(pattern, b).group(1)) |
![]() | 6 JCZ2MkKb5S8ZX9pq OP |
![]() | 7 JCZ2MkKb5S8ZX9pq OP @lululau python 下会报错唉,不能加那个竖条。 |
![]() | 8 JCZ2MkKb5S8ZX9pq OP |
![]() | 9 imn1 2019-10-21 23:59:24 +08:00 ![]() 我写的你为何不看呢? In [4]: import re In [5]: a = 'like/a2bc3d?param' In [6]: r = r'([^/]+/)([^/\?]+)\?.*$' In [7]: re.findall(r,a) Out[7]: [('like/', 'a2bc3d')] In [8]: b = 'comment/a2bc3d?param' In [9]: re.findall(r,b) Out[9]: [('comment/', 'a2bc3d')] |
![]() | 10 JCZ2MkKb5S8ZX9pq OP @imn1 我在题目下 append 了一下,因为要指定特定的前缀,一开始没讲明白。 |
![]() | 11 JCZ2MkKb5S8ZX9pq OP 另外我试了一下速度,@ClericPy 的方法满快的。 ``` text = 'http://abc.com/liked/a2bc3d?param\nhttp://abc.com/comment/a2bc3d?param' start = time.time() pt1 = re.compile(r'(?:like|comment)/(.*?)\?') for i in range(100000): r = pt1.search(text).group(1) print(f'pt1: {time.time()-start}') start = time.time() pt2 = re.compile(r'([^/]+/)([^/\?]+)\?.*$') for i in range(100000): r = pt2.search(text).group(2) print(f'pt2: {time.time()-start}') ``` 结果 pt1: 0.20356273651123047 pt2: 1.4281411170959473 |
![]() | 12 itechify PRO |
![]() | 13 ClericPy 2019-10-22 09:56:42 +08:00 @JCZ2MkKb5S8ZX9pq 呃, 其实我那就是个简单的非捕获分组, 没想到性能, 这种简单取值没必要像你那样用零宽断言 |
![]() | 14 JCZ2MkKb5S8ZX9pq OP @ClericPy 嗯,之前没用过这个,搞不明白 group 出来的那几个东西。 昨天后来学了一下,现在稍微有点概念。感谢。 |