这里是新消息,如果我错过任何重要信息,表示歉意!
我一直在使用https://regex101.com/来为以下内容构建一些正则表达式-
我想使用一些正则表达式代码,如果文本字符串中的冒号数量为3,则返回true,如果它等于或大于4,则返回false,例如以下文本字符串应返回false-
Bin不在:12:54:38错误的颜色箱在:12:43:17
但这应该返回一个匹配项-
Bin不在:12:54:38
或者,我一直在寻找其他方法来获取相关的响应,例如\ d \ d \ D \ d \ d \ D \ d \ d \ D \ D,即,如果在数字后面有一个字母,则返回真值但是我真的很努力尝试使其工作。
任何一个选项的帮助将不胜感激,因为任何一个都会标记我的需求。
非常感谢!
答案 0 :(得分:0)
答案 1 :(得分:0)
要匹配示例数据中包含冒号3倍的格式,可以使用:
^[^\r\n:]*:\d{2}:\d{2}:\d{2}[^\r\n:]*$
那将匹配
^
声明字符串的开头[^\r\n:]*
否定的字符类,不能匹配回车符,换行符或冒号的0+次(?::\d{2}){3}
匹配一个冒号,后跟2位数字并重复3次[^\r\n:]*
否定的字符类,不能匹配回车符,换行符或冒号的0+次$
声明行的结尾如果要匹配的值是24h格式,则可以使用此正则表达式
^[^\r\n:]*:(?:2[0-3]|[01]?[0-9]):(?:[0-5]?[0-9]):(?:[0-5]?[0-9])[^\r\n:]*$
答案 2 :(得分:-1)
使用Perl一个衬纸
> cat colon.dat
Bin Not Out at:12:54:38Wrong Colour Bin at:12:43:17
Bin Not Out at:12:54:38
> perl -ne ' { while(m/(:)/g){$x++} print $x==3 ? "true\n":"false\n" ; $x=0 } ' colon.dat
false
true
>
或更优雅
> perl -ne ' { $x++ while(m/(:)/g) ; print $x==3 ? "true\n":"false\n" ; $x=0 } ' colon.dat
false
true
>