楼主的正则扔了好久不弄已经捡不起来了,只是记得貌似用正则表达式可以表示任意字符串,以便查找 /替换 /删除所需要的目标。
那么我现在有这样的一个字符串:
addr: "24330208"
我想把冒号前后(不包含空格和引号)的两项提取出来,用正则应该怎么弄呢?
语言不限。
我用 python 写
m=re.search('[ ]*( \ w * ) : [ \"] *( \ s * ) [ \"] *', ' addr: "24330208"')
m.group()
请问问题在哪里?
谢了
![]() | 1 whosesmile 2015-12-29 15:36:24 +08:00 ![]() 1.这么简单的东西为什么要用正则? string.split 不行吗? 2.好吧,还是写个给你(js):/(addr):\s*\"(\d+)\"/.exec('addr: "24330208"') |
2 feiyuanqiu 2015-12-29 15:41:22 +08:00 ![]() var s = 'addr: "24330208"', r = /(\w+):\s*"(\w+)"/; s.match(r); |
![]() | 3 northisland OP 其实前后两段,空格数量,有无引号是不一定的 m=re.search('(.*):(.*)', ' addr: "24330208"') if m: print m.group(1).replace('"','').strip(), group(2).replace('"','').strip() 是可行的 但是我想看看有没有不把结果去引号、空格的做法 |
4 zwhu 2015-12-29 16:02:38 +08:00 ![]() /(\w+):\s*(?:(?:"(.+?)")|(.+))/ 这样应该能满足 |
![]() | 5 sennes 2015-12-29 16:09:46 +08:00 ![]() http://regexper.com/ 把正则丢进去图示一下,就知道怎么修改和补充条件了。 |
![]() | 6 gimp 2015-12-29 16:25:11 +08:00 ![]() |
![]() | 7 hqs123 2015-12-29 16:46:34 +08:00 ![]() 不懂,但来学习下... |
![]() | 8 chemzqm 2015-12-29 17:20:01 +08:00 ![]() vim: let list= matchlist('addr: "343423"', '\v^(\w+)\s*:\s*"(.*)"') echo list[1] echo list[2] Javascript var ms = 'addr: "424344"'.match(/^(\w+)\s*:\s*"(.*)"/) console.log(ms[1]) console.log(ms[2]) python import re m = re.search('^(\w+)\s*:\s*"(.*)"','abbr: "42414"') m.group(1) m.group(2) 贪婪匹配版本 |
![]() | 9 DejaVud 2015-12-29 17:34:39 +08:00 ![]() 楼主问了他写的正则问题在哪,所以我来试回答下 1.用 raw string, r"[]*(\w*):[\"]*(\s*)[\"]*",否则'\'会导致转置 2.\s 不是用来匹配数字 再试试 |