Regex 如何删除单引号字符串中的单引号?
我需要删除一个单一的报价在一个单一的报价电子邮件地址与Sed 我已经试着与你匹配了Regex 如何删除单引号字符串中的单引号?,regex,bash,sed,Regex,Bash,Sed,我需要删除一个单一的报价在一个单一的报价电子邮件地址与Sed 我已经试着与你匹配了 ,'.*(?<=@) 到 我如何在不触及单引号其余部分的情况下进行替换 感谢您没有指定有关输入字符串格式约束的足够信息。但是,下面的sed命令适用于您提供的示例字符串和许多类似的字符串。(准确地说:它适用于只有一个字符要删除的任何行,可以出现在电子邮件地址名称部分的任何位置,并且单引号分隔的电子邮件地址本身既不是第一个逗号分隔的字段,也不是最后一个逗号分隔的字段。如果有两个以上的电子邮件地址要更正
,'.*(?<=@)
到
我如何在不触及单引号其余部分的情况下进行替换
感谢您没有指定有关输入字符串格式约束的足够信息。但是,下面的
sed
命令适用于您提供的示例字符串和许多类似的字符串。(准确地说:它适用于只有一个字符要删除的任何行,可以出现在电子邮件地址名称部分的任何位置,并且单引号分隔的电子邮件地址本身既不是第一个逗号分隔的字段,也不是最后一个逗号分隔的字段。如果有两个以上的电子邮件地址要更正,它将在f首先。)
它应该给你一个想法。关键是在,“
和,
之间锚定匹配
sed -e "s/\(,'[^']*\)'\([^']*@[^']*',\)/\1\2/"
将字符串
aabc,123,'def','me。ole@abc.com“,123,abc
始终使用此格式?将*
更改为[^']*
为什么需要使用单引号字符串?为什么不双重报价?你能用';Unicode字符,而不是和“'”。假设这是JavaScript,您可以使用replace()函数吗?请您提供更多信息,以便我们提供帮助。我会在评论中提到这一点,但我还没有50个声誉。抱歉。根据标签,它是Bash.BTW,(?非常好:唯一的调整是确保字符后跟撇号,例如sed-e“s/\(,'[^'][^']]*\)[']\([^'][^']*@[^'][^']*',\)/\1\2/”
@DavidC.Rankin正如我所写,OP没有对这些行的格式指定足够的信息。我们不知道这些虚假的撇号是如何出现的。我假设它们出现在地址的名称部分的任何位置,包括开头,但这只是一个猜测。你确定它们只会在至少一个字符之后出现吗acter?…嗯,我最好编辑我的答案以澄清…同意,我并没有贬低你提供的内容,但考虑到电子邮件地址可能是什么,他可能希望确保引号之间至少有个字符是有道理的(这更像是一种验证,而不是删除的实际要求)
aabc,123,'def','me.ole@abc.com',123,abc
sed -e "s/\(,'[^']*\)'\([^']*@[^']*',\)/\1\2/"