我试图删除从开始到行中定义的字符串相同的行,并剪切该字符串之后的所有内容。
示例行:
http://waterfountain.common.com/12443
http://waterfountain.common.com/243
http://waterfountain.common.com/243
http://glass.common.com/clear
http://glass.common.com/clear
http://1room.common.com/closet/empty
在这种情况下,我想比较从linestart到“ common.com”的所有内容,删除所有重复项,并另外裁剪“ common.com”或“ /”之后的所有内容。
所需的最终结果应类似于:(末尾带有或不带有“ /”)
http://waterfountain.common.com/
http://glass.common.com/
我找到了部分解决方案,但是我不知道如何根据我的需要进行修改/组合。
例如,删除完全相同的行:
^(.*?)$\s+?^(?=.*^\1$)
编辑:我尝试了“第四只鸟”的解决方案,尽管它确实适用于我提到的情况,但是一些测试表明在某些情况下它会失败。(我忘记提及的情况。)
数字可能出现在初始“ //”之后,例如
http://2eyes.common.com/
也可能在第三个“ /”之后有字母,例如
http://snow.common.com/first/
对于当前的示例数据,您可以使用捕获组来捕获正斜杠之前的捕获和一个数字作为定义的字符串。
然后从该点开始匹配,直到字符串结尾,并使用对组1的向后引用重复匹配。
^(https?://[^/\n]+)/.*(?:\R\1.*)*
说明
^
字符串开始(https?://[^/\n]+)
第1组,在第一次遇到正斜杠之前用可选的s捕获http:///.*
匹配正斜杠,后跟除换行符0+次以外的任何字符(?:
非捕获组
\R\1.*
匹配任何unicode换行符序列,反向引用组1和字符串的其余部分)*
关闭非捕获组并重复0次以上在替换中使用第一个捕获组$1
。
结果
http://waterfountain.common.com
http://glass.common.com
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句