Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 如何删除单引号字符串中的单引号?_Regex_Bash_Sed - Fatal编程技术网

Regex 如何删除单引号字符串中的单引号?

Regex 如何删除单引号字符串中的单引号?,regex,bash,sed,Regex,Bash,Sed,我需要删除一个单一的报价在一个单一的报价电子邮件地址与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/"