找到两个||需要Reg ex

时间:2013-04-10 10:49:49

标签: regex

我的文本文件有很多这样的行:

12345|any string |5585|more string|yet more string|safdowdjfpd|wdfiojeif

我想找到一行代码,代码前为空值:

12345|any string|5585||yet more string|safdowdjfpd|wdfiojeif

文件中还有其他行有空字符串,因此它必须只是被捕获的第3和第4个管道符号。

5 个答案:

答案 0 :(得分:1)

非常简单的字符串匹配:

/\|\|..\|/

这匹配||后跟任意两个字符,以|

结尾

答案 1 :(得分:1)

试试这个

/.*\|.*\|.*\|\|.*/

使用egrep进行测试

[root@srv test]# echo "12345|any string|5585|annoying string|CODE|safdowdjfpd|wdfiojeif" | egrep -o ".*\|.*\|.*\|\|.*"
[root@srv test]#

[root@srv test]# echo "12345|any string|5585||CODE|safdowdjfpd|wdfiojeif" | egrep -o ".*\|.*\|.*\|\|.*"
12345|any string|5585||CODE|safdowdjfpd|wdfiojeif
[root@srv test]#

答案 2 :(得分:1)

这匹配包含连续管道的任何字符串,这些管道是字符串的第3和第4个管道:

^[^|]+\|[^|]+\|[^|]+\|\|

匹配

12345|any string|5585||yet more string|safdowdjfpd|wdfiojeif

不匹配:

12|345|any string|5585||yet more string|safdowdjfpd|wdfiojeif
12345|any string|5585|yet more string|safdowdjfpd|wdfiojeif

答案 3 :(得分:0)

到目前为止,您尝试过哪些模式?其中\\|{2}是什么?

答案 4 :(得分:0)

计算该位置的[任何字符]的数量:

/.+\|.+\|.+{0}\|.+\|.+\|.+\|.+/