提取仅具有重复字符集2-4次的单词

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了提取仅具有重复字符集2-4次的单词相关的知识,希望对你有一定的参考价值。

样本输入:

123123123 aaaaa  abababab  aaab baaa abcde1abcde1
aaaaaa 1212121212

预期产量:

123123123
abababab
abcde1abcde1
aaaaaa

这是我试过的:

egrep '(.)11{2,4}' test
答案

假设你的grep版本支持-o-w选项

-o, - only-matching仅打印匹配行的匹配(非空)部分,每个此类部分位于单独的输出行上。

-w, - word-regexp仅选择包含构成整个单词的匹配项的行。测试是匹配的子字符串必须位于行的开头,或者前面是非单词构成字符。同样,它必须位于行的末尾或后跟非单词构成字符。单词构成字符是字母,数字和下划线。

据我所知,egrep已被弃用,而grep -E则相同

添加-o选项到OP的尝试,以及-w以避免匹配的单词部分

$ grep -owE '(.)11{2,4}' ip.txt
aaaaa
aaaaaa

改变正则表达式

$ grep -owE '(.{1,})1{1,3}' ip.txt
123123123
abababab
abcde1abcde1
aaaaaa
  • .{1,}要重复的一个或多个字符
  • 1{1,3}最多4次,所以我们需要再次匹配至少一次,最多再次3次

以上是关于提取仅具有重复字符集2-4次的单词的主要内容,如果未能解决你的问题,请参考以下文章

如何从重复的字符串中提取单词

从python中的字符串中提取英文单词

提取两个单词之间的字符串,具有多种模式

21个常用代码片段

文本特征提取

PHP 代码片段