正则表达式匹配所有单词对

标签 regex grep

我试图从一段文本中获取所有单词对。
我有以下正则表达式 (\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

关于正则表达式匹配所有单词对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69122559/

相关文章:

python-3.x - Pandas 正则表达式提取两个不同符号前后的所有内容

python - 根据字符串重命名文件

shell - 如何从文本文件中删除取自另一个文件的行

regex - 我的正则表达式匹配太多。我该如何让它停止?

regex - 重新格式化整数 block (幻方)的正则表达式

linux - 如何使用 grep 命令计算扩展 ASCII 字符

linux - 我如何在 grep 中创建相同输出的类?

linux - 为什么这个 shell 命令不起作用? ('command' 有效但 'command|cat' 无效)

javascript - 使用非常相似的正则表达式分割字符串后,输出出现奇怪的不同

regex - 如何使用正则表达式仅匹配每行字符串的第一次出现