我有这段文字
2/27/2020 7:00:43 PM 138 (6036) Downloading view page: /personal/test/Documents/Forms/All.aspx...
2/27/2020 7:00:43 PM 138 (6036) Downloading page WebParts...
2/27/2020 7:00:44 PM 138 (6036) Downloading page web parts completed. 1 web parts successfully downloaded.
2/27/2020 7:00:44 PM 138 (6036) Downloading page content...
2/27/2020 7:00:44 PM 138 (6036) Restarting from position 8312...
2/27/2020 7:00:44 PM 138 (6036) Error: error
double double
2/27/2020 7:00:43 PM 138 (6036) Downloading view page: /personal/test/sdadasda/Forms/All.aspx...
2/27/2020 7:00:44 PM 138 (6036) Error: Unspecified error
2/27/2020 7:00:43 PM 138 (6036) Downloading view page: /personal/test/21312332131/Forms/All.aspx...
2/27/2020 7:00:43 PM 138 (6036) Downloading view page: /personal/test/123/Forms/All.aspx...
2/27/2020 7:00:43 PM 138 (6036) Downloading view page: /personal/test/123/Forms/All.aspx...
2/27/2020 7:00:43 PM 138 (6036) Downloading view page: /personal/test/Documeents/Forms/All.aspx...
2/27/2020 7:00:43 PM 138 (6036) Downloading view page: /personal/test/wr/Forms/All.aspx...
我需要返回所有带有以下内容的行:
预期结果:
2/27/2020 7:00:43 PM 138 (6036) Downloading view page: /personal/test/21312332131/Forms/All.aspx...
2/27/2020 7:00:43 PM 138 (6036) Downloading view page: /personal/test/123/Forms/All.aspx...
2/27/2020 7:00:43 PM 138 (6036) Downloading view page: /personal/test/123/Forms/All.aspx...
2/27/2020 7:00:43 PM 138 (6036) Downloading view page: /personal/test/Documeents/Forms/All.aspx...
2/27/2020 7:00:43 PM 138 (6036) Downloading view page: /personal/test/wr/Forms/All.aspx...
我尝试了否定的前瞻和常规的[^ Docuemnts]。似乎没有任何作用。
(\(\d+\)).*Downloading view page:\s\/personal\/\S+\/[^(Documents)]\/F
(\(\d+\)).*Downloading view page:\s\/personal\/\S+\/(?!Documents)\/F
答案 0 :(得分:1)
一个简单的解决方案是仅使用单个否定前瞻排除Documents
:
^(?!.*\bDocuments\b).*\bDownloading view page:(?!\S).*$
这里是正则表达式模式的完整说明:
^ from the start of the string
(?!.*\bDocuments\b) assert that "Documents" does not occur anywhere in the line
.*\bDownloading view page: then match "Downloading view page:"
(?!\S) assert that what follows is either whitespace or end of string
.* match the rest of the line
$ until the end of the string