首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在一行中捕获多个组

如何在一行中捕获多个组
EN

Stack Overflow用户
提问于 2020-03-22 14:54:03
回答 1查看 142关注 0票数 1

因此,我试图在linux上使用sed来实现regex。我有这些台词:

代码语言:javascript
运行
复制
│      .--.     3..6 °C        │  _ /"".-.     6..8 °C        │  _ /"".-.     2..6 °C        │  _ /"".-.     0..4 °C        │
│  _ /"".-.     -2..+3 °C      │  _ /"".-.     1..5 °C        │   ,\_(   ).   1..4 °C        │   ,\_(   ).   -1..+2 °C      │
│     (   ).    -1..+1 °C      │     (   ).    -2..+2 °C      │     (   ).    -4..+2 °C      │     (   ).    -4..+2 °C      │

我如何只提取数字和它们的符号?但他们中的每一个人?我在使用组和regexes时非常草率,任何提示和解释都会有帮助。我得到了这个正则表达式,它可以缩短问题,但我仍然不能提取每一个匹配。希望能帮上忙。

代码语言:javascript
运行
复制
sed -n -E "/[+-]?[0-9]+\.{2}[+-]?[0-9]+/p"

我希望我的输出为3,6,6,8,6,0,4,如果在第一行,第二和第三行:

-2,+3 1,5 1,4 -1,+2

-1,+1-2,+2-4,+2-4,+2

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-22 16:15:49

这可能对您有用(GNU sed):

代码语言:javascript
运行
复制
sed -E 's/([+-]?[0-9]+)\.\.([+-]?[0-9]+)/\n\1,\2\n/g;s/^[^0-9+-].*$/ /mg;s/^ |\n| $//g' file

用换行符包围有效字符串(同时将..转换为, )。

用空格替换所有无效字符串。

删除线的前端和末端的空格和任何引入的新行。

注意:在替换命令上使用m标志。

另一种方法是从头到尾遍历行,删除无效字符:

代码语言:javascript
运行
复制
sed -E 's/^/\n/;:a;s/\n([+-]?[0-9]+)\.\.([+-]?[0-9]+)/\1,\2 \n/;ta;s/\n./\n/;ta;s/ ?\n//' file
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60800832

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档