python 正则提取一个字符串时如何只返回字符串而不返回边界?

2014-11-22 15:37:20 +08:00
 tommark
例如匹配字符串“aaaa<ab>xxx"中尖括号中的ab,用‘\<.*\>'匹配后,返回的结果是<ab>,如何实现返回的结果只有ab呢?
一种简单的方法是对返回的结果做切片,请问怎么用python正则表达可以做到?
5971 次点击
所在节点    Python
13 条回复
banbanchs
2014-11-22 15:43:24 +08:00
加括号,比如\<(.*)\>
vulgur
2014-11-22 15:46:39 +08:00
p = re.compile(r'<(.*)>)
m = p.search(string)
if m:
s = m.group(1)
return s
tommark
2014-11-22 15:48:25 +08:00
@banbanchs 试了一下不管用啊
14
2014-11-22 15:49:55 +08:00
哈,这个问题好熟悉,以前刚用re,很纠结匹配之后还要去切片甚至多次re多次切片,直到我知道了()之后眼泪掉下来
tommark
2014-11-22 15:53:50 +08:00
@banbanchs 不好意思,我自己弄错了,刚才用这个网站http://tool.oschina.net/regex试验结果不对,用python重新做了一下是对了
decken
2014-11-22 16:49:25 +08:00
@vulgur 如果是用sub替换字符串的时候这样写规则无效哦,还有什么办法吗
aaaa007cn
2014-11-22 17:55:29 +08:00
@decken
RTFM
https://docs.python.org/3/library/re.html#re.sub
> Backreferences, such as \6, are replaced with the substring matched by group 6 in the pattern.
> In string-type repl arguments, in addition to the character escapes and backreferences described above, \g<name> will use the substring matched by the group named name, as defined by the (?P<name>...) syntax. \g<number> uses the corresponding group number; \g<2> is therefore equivalent to \2, but isn’t ambiguous in a replacement such as \g<2>0. \20 would be interpreted as a reference to group 20, not a reference to group 2 followed by the literal character '0'. The backreference \g<0> substitutes in the entire substring matched by the RE.
xz
2014-11-22 18:04:34 +08:00
a="aaaa<ab>xxx"
re.findall("<(.+)>",a)
ryd994
2014-11-23 07:30:57 +08:00
regex look ahead/behind
ryd994
2014-11-23 07:31:50 +08:00
这题这么简单还用不上capture
leoleozhu
2014-11-23 07:51:14 +08:00
前后环视
cdxem713
2014-11-23 08:30:59 +08:00
顺带一问,如果是在js里面要达到同样效果,有没有办法呀
mhohai
2014-11-24 08:51:55 +08:00
正则,你知道捕获括号和非捕获括号么?不想匹配,你知道有四种环视么?
知道一个会有问题么?

啥都不知道,就别说会正则!

————没错,我是愤青!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/148509

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX