正则表达式帮助,反查询替换

时间:2014-06-08 01:42:54

标签: regex

如何删除任何包含3个或更少斜杠但保留更大链接的行?

A. http://two/three/four
B. http://two/three
C. http://two

A会留下别的。

由于

2 个答案:

答案 0 :(得分:3)

搜索:(?m)^(?:[^/]*/){0,3}[^/]*$

替换:""

demo上,查看只有3个或更少斜线的行匹配。这些是尼克斯的。

解释正则表达式

(?m)                     # set flags for this block (with ^ and $
                         # matching start and end of line) (case-
                         # sensitive) (with . not matching \n)
                         # (matching whitespace and # normally)
^                        # the beginning of a "line"
(?:                      # group, but do not capture (between 0 and 3
                         # times (matching the most amount
                         # possible)):
  [^/]*                  #   any character except: '/' (0 or more
                         #   times (matching the most amount
                         #   possible))
  /                      #   '/'
){0,3}                   # end of grouping
[^/]*                    # any character except: '/' (0 or more times
                         # (matching the most amount possible))
$                        # before an optional \n, and the end of a
                         # "line"

答案 1 :(得分:1)

sed

您可以使用以下sed命令执行此操作,假设您的行位于foo.txt

sed -n '/\(.*\/\)\{4,\}/p' foo.txt

-n选项不输出,但由于/末尾的p命令,无论如何都会打印与sed之间的模式匹配的行。表达

模式是:/至少发生4次,每次都可能先于其他任何字符串。