regex - 正则表达式匹配所有单词对
问题描述
我正在尝试从一段文本中提取所有单词对。
我有以下正则表达式(\w+) +(\w+)
,我在一段没有标点符号的文本上运行。我的问题是这不考虑所有可能的对
$ echo "hello dear world" | grep -Eoi "(\w+) +(\w+)"
hello dear
我想要以下
$ echo "hello dear world" | grep -Eoi [some expression]
hello dear
dear world
解决方案
传统grep
不会返回捕获组。
您可以考虑pcregrep
使用前瞻和 2 个捕获组:
echo "hello dear world" | pcregrep -o1 -o2 '(\w+)(?=(\h+\w+))'
hello dear
dear world
如果你没有,pcregrep
那么你可以使用这个简单的awk
:
awk '{for (i=1; i<NF; ++i) print $i OFS $(i+1)}' <<< "hello dear world"
hello dear
dear world
推荐阅读
- java - 在java上减少一定数量
- javascript - Blazor 等待 JSRuntime.InvokeAsync
当我可以观察到正在捕获的 JS 值时,在 C# 中捕获图像 src 返回 null - java - 如何从不同的方法中提取遥测代码?装饰图案?奥普?
- google-sheets - 谷歌表格中的平滑线图 - 复杂案例
- python - 在不退出子进程的情况下恢复 python 代码
- database - 如何从 SAP HANA 数据库中获取 SPS 编号?
- javascript - 验证表单的有效性 API
- c++ - 为什么for循环输出0作为第一个数字,如果我单独编写相同的for循环条件,它会输出1?
- python - 使用令牌不明确访问共享点列表
- c++ - 有没有更有效的方法来存储向量
> ? C++