一个关于正则表达式的问题,两个固定字符串之间的字符提取

2021-01-05 14:24:31 +08:00
 j0shfan

请问大家,如何表达提取在两个已知字符之间的字符(不包含那两个已知字符) 比方现在有一个字符串 20:19:48.654 : Reply[2] from 172.16.178.125: bytes=256 time=5.2 ms TTL=62 jitter=0.10 ms 我想提取的是 Reply[2]中的 2 那么现在我的方法是先将 [ 2 ] 提取出来,使用'[\d]' 再将 2 使用'\d'提取出来

能不能直接定义取出'Reply['和']'之间的数字 谢谢大家,我发现我这句语法的不懂,给我造成了很多麻烦

1747 次点击
所在节点    Python
5 条回复
morevin
2021-01-05 14:41:20 +08:00
re.findall('Reply\[([0-9]*)]', 目标字符串)[0]
ymcz852
2021-01-05 14:41:25 +08:00
'Reply[2] from'.match(/Reply\[(\d+)\]/)
可以使用捕获括号去分组匹配
jifengg
2021-01-05 15:00:49 +08:00
\[([\d]+)\]

直接取出,就用()分组,然后直接取捕获到的内容。
xdnauly
2021-01-05 15:02:11 +08:00
In [30]: import re

In [31]: re.sub(".*Reply\[(\d+)\].*", r"\1", "20:19:48.654 : Reply[2] from 172.16.178.125: bytes=256 time=5.2 ms TTL=62 jitter=0.10 ms")
Out[31]: '2'

###########
#答案
re.sub(".*Reply\[(\d+)\].*", r"\1", target_str)
jswh
2021-01-05 15:22:41 +08:00
1.用括号分组
2.用零宽断言

另推荐教程 https://deerchao.cn/tutorials/regex/regex.htm#lookaround

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

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

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

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

© 2021 V2EX