Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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 - Fatal编程技术网

Regex 如何使用正则表达式替换标点字符串?

Regex 如何使用正则表达式替换标点字符串?,regex,Regex,我有很多逗号分隔的记录,如下所示: “Alex Vestergaard”,“5”,“11”,“16395天,16小时,53分钟,31分钟” 秒,2014-01-03 15:22:20,1403,玛丽亚·费尔南达 卢西亚诺、27、38、3小时17分31秒、2014-01-09 04:08:24、“1397”、“Aimee Suarez”、“1”、“1”、“33分8秒”等 在每第6次出现[,]之后,我必须删除每个名称前的逗号。我想用[]替换[,]我可以使用正则表达式吗?可以使用正则表达式,但简单的循

我有很多逗号分隔的记录,如下所示:

“Alex Vestergaard”,“5”,“11”,“16395天,16小时,53分钟,31分钟” 秒,2014-01-03 15:22:20,1403,玛丽亚·费尔南达 卢西亚诺、27、38、3小时17分31秒、2014-01-09 04:08:24、“1397”、“Aimee Suarez”、“1”、“1”、“33分8秒”等


在每第6次出现[,]之后,我必须删除每个名称前的逗号。我想用[]替换[,]我可以使用正则表达式吗?

可以使用正则表达式,但简单的循环也可以做到这一点

假设内容包含您的文本:

values = contents.split(',')
size = len(values)
start = 0
result = ""
while start < size:
    result += ','.join(values[start, min(start+6, size)])
    size += 6

return result
替换

?:*?,“{5}.*?,”

$1“

说明:

?:.*?”,”{5}.*? - 第一组 ?:.*?,“{5}-0+任何字符的出现次数,但不包括后跟“,”的换行符。重复整个过程5次 .*? - 延迟匹配任何字符的0+次出现次数,但不匹配换行符,以便达到第6次出现的“,” “,”-匹配并捕获组2中的序列“”
现在,整个比赛只不过是Group1和Group2i.e$1$2的组合。我们只需将此匹配项替换为$1”“

使用适当的解析器即可。非常感谢!就是这样:有没有办法只匹配文本,这样它就匹配文本前面的逗号?我注意到一些记录的项目比其他记录少。在这种情况下,这将很困难,因为即使我为一个名称编写一个序列,该序列也可能与其他非名称的值匹配,从而导致不正确的结果。我写了这个正则表达式,记住了你的陈述:在每第6次出现[,]之后,我想用[]OK]替换[,]。非常感谢!