有没有一种方法可以编写一个正则表达式,从包含48个分隔字符的每一行中删除2个分隔字符“+”?我试着手动删除它们,但是时间太长了。然后我试了一个有问题的正则表达式:s/(^(?:.*?þ){46}.*?)þþ(.*)/$1$2/g,但它灾难性地失败了。
s/(^(?:.*?þ){46}.*?)þþ(.*)/$1$2/g
li9yvcax1#
你可以使用一个否定字符类来匹配除了þ以外的任何字符,而不是一个非贪婪的点。
þ
^((?:[^þ]*þ){46}).*?þþ(.*)
模式匹配:
^
(
(?:[^þ]*þ){46})
.*?þþ
þþ
(.*)
请参见regex demo。
1条答案
按热度按时间li9yvcax1#
你可以使用一个否定字符类来匹配除了
þ
以外的任何字符,而不是一个非贪婪的点。模式匹配:
^
字符串开头(
捕获组1(?:[^þ]*þ){46})
重复46次匹配字符,但þ
后面跟着匹配的þ
.*?þþ
匹配尽可能少的字符,直到第一次出现þþ
(.*)
捕获组2,匹配其余行请参见regex demo。