Regex 用于在“:”之后查找大于20或小于5的字符串的正则表达式

Regex 用于在“:”之后查找大于20或小于5的字符串的正则表达式,regex,Regex,我有一个很大的数据集,然后我需要在Sublime文本编辑器中使用正则表达式进行清理 我试图删除冒号后少于5个字符的任何内容,包括空格。 还尝试删除任何大于20个字符的内容 例如: jshfdgl:jss OIADFGFDG: 对外直接投资基金:2 奥吉德福吉斯: iognhif:gojdf sdofig peoji-009 ogijdfs:_ge2 这些都应该属于正则表达式 我还尝试使用冒号后面的lookbehind来查找小于5、大于20的字符 尝试了很多东西,但似乎一直缺少空格。试试这个正则表

我有一个很大的数据集,然后我需要在Sublime文本编辑器中使用正则表达式进行清理

我试图删除冒号后少于5个字符的任何内容,包括空格。 还尝试删除任何大于20个字符的内容

例如:

jshfdgl:jss OIADFGFDG: 对外直接投资基金:2 奥吉德福吉斯: iognhif:gojdf sdofig peoji-009 ogijdfs:_ge2 这些都应该属于正则表达式

我还尝试使用冒号后面的lookbehind来查找小于5、大于20的字符

尝试了很多东西,但似乎一直缺少空格。

试试这个正则表达式:

(?<=:)(?:.{0,5}|.{20,})$
用空白字符串替换匹配项

说明:


根据我支持的@Andy G的建议, 我准备了一个解决方案,它使用以下perl而不是正则表达式 要从命令提示符执行的一个线性脚本:

perl -lan -F: -e "$len = length($F[1]); printf(qq(%s:%s\n), $F[0], ($len > 5 && $len <= 20)?$F[1]:'')" inp.txt >out.txt
说明:

-lan-perl选项:-l-chop输入行终止符, -a-自动拆分模式, -n-循环执行。 -F:-另一个perl选项-定义自动拆分分隔符:。 多亏了它,输入行被拆分,刚好打开:并且结果被保存 在预定义的数组F中。 -e…-该程序使用一行程序脚本来执行。 inp.txt-输入文件名。 >out.txt-输出重定向。 现在转到脚本内容:

$len=长度$F[1];-保存第二个输入段的长度 之后:。 printf…-输出行的格式化打印,参数如下所述。 qq%s:%s\n-格式字符串。qq操作符用于嵌入额外的 格式字符串周围的双引号,在普通双引号之间 围绕脚本内容。 $F[0]-要打印的第一个字符串-之前的第一个输入段:。
$len>5&&$len您正在使用哪种编程语言?在问题中添加一些代码最简单的方法是分割冒号上的文本并确定两部分的长度。为什么需要正则表达式?我试过很多东西。。。请发布这些内容。这太完美了,如果在冒号前选择大于12个字符的内容,您会怎么做?要选择这样的字符串,您可以从下面的内容中得到一个想法