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

时间:2017-11-07 00:18:50

标签: regex

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

  

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

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

2 个答案:

答案 0 :(得分:1)

替换

((?:.*?”,”){5}.*?)(”,”)

$1””

Click for Demo

<强>解释

  • ((?:.*?”,”){5}.*?) - 第1组
    • (?:.*?”,”){5} - 出现任意字符(但不是换行符)0次,后跟”,”。重复整个序列5次
    • .*? - 懒惰地匹配任何字符的0次出现,但不匹配换行符,以便达到”,”的第6次出现
  • (”,”) - 匹配并捕获第2组中的序列”,”

现在,整场比赛只不过是Group1和Group2的组合(即$1$2)。我们只需要将此匹配替换为$1””

答案 1 :(得分:0)

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

假设内容包含您的文字:

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

return result