正则表达式 - 删除第一个逗号之前的所有内容以及第二个逗号之后的所有内容

时间:2016-07-06 16:31:54

标签: regex replace notepad++

我有以下字符串:

55,1001wuensche.com,0,354137264,1,"0.00 %",0,"0.00 %","2016-04-24 09:00:24"
56,100hoch3.de,47,2757361,2,"0.00 %",0,"0.00 %","2016-02-11 00:42:10"

我想删除第一个逗号之前的所有内容:55,56,

和第二个逗号之后的所有内容。

结果应如下所示,其中只剩下域名:

1001wuensche.com
100hoch3.de

我正在使用Notepad ++来实现这一目标。有人有个主意吗?感谢您的帮助!

3 个答案:

答案 0 :(得分:3)

^.*?,(.*?),.*$

捕获组$1将是前两个逗号之间的所有内容。

答案 1 :(得分:2)

您可以搜索^[^,]+,([^,]+).*并将其替换为$1

如果有可能是格式不正确的行(在第一个逗号之前包含空字符串或没有逗号的行),则可以使用更严格的模式,如^[^,\r\n]*,([^,\r\n]+).+

答案 2 :(得分:0)

另一种做这种事情的方法(在更一般意义上)是用#逗号({1}}用逗号分隔成一个数组,然后只用第二个那个数组的元素。

然而另一种方法是执行两个"替换"正则表达式,都明确地锚定到行的开头或结尾(第一个是"贪婪"例如:

split

"贪婪"非常重要,因为在第一种情况下,我们希望匹配最少个字符数,以便停止遇到的 first 逗号。 (因此,"非贪婪。")然而,在第二种情况下,你想要"贪婪"识别(并设置为空字符串)您可以找到的最大匹配:即"字符串的其余部分。"

找到最简单的最明显的方式来做这件事,因为,不可避免地,某人有一天会想要改变这种逻辑。或者,有人会给你一个文件,打破你的聪明,优雅"做法。思考"可测试,可维护。"