如何使用正则表达式提取重叠的字符模式?

如何使用正则表达式提取重叠的字符模式?

是否可以创建一个匹配重叠字符模式的正则表达式?

例如,我想匹配ABC,BCD,西德定义从字符串abcdef

如果不可能的话,你能用另外两种石器时代的工具做同样的事情吗? sed 和 awk?

答案1

如果你的意思是重复提取3个字符, 然后:

在旧的 sed 中:

$ sed ':1;h;s/\(...\).*/\1/p;g;s/.//;t1;d'  <<<$'abcdef\n1234567\n'
abc
bcd
cde
def
123
234
345
456
567

在旧的 awk 中:

$ awk '{a=$0;for(i=1;i<length(a)-1;i++){print substr(a,i,3)}}' <<<$'abcdef\n1234567'
abc
bcd
cde
def
123
234
345
456
567

相关内容