2017-10-11 152 views
1

对于每一行,如何删除的"的发生和最后发生.,noninclusive之间的一切吗?要被删除的部分包含任意数量和有问题的(对于正则表达式)的字符,如:/\()[]|.,?"可变图案等删除两个字符之间的一切都在每行

例如:

"123456789","xyxyxy","DELETE///.T.H.I.S.aaa" 
"123","abc","DELETE."\T.H.I.S\[.]".1234" 

"123456789","xyxyxy",".aaa" 
"123","abc",".1234" 

我持续失败(可能是因为不正确的逸出的有问题的字符?)。

回答

1

试试这个正则表达式: ((?:[^"\n]*"){5})(.*)(\..*)$

Click for Demo

说明:

  • ^ - 断言字符串的开始
  • (?:[^"\n]*") - 匹配0+既不是任何字符的出现一"也不换行符贪婪地接着是"
  • {5} - 重复上述比赛5次。到目前为止匹配的所有内容都在第1组中捕获。
  • (.*) - 匹配并捕获任何字符出现的0+ 贪婪但不是换行符。这存储在group2中。这部分将在以后被删除/删除。贪婪的匹配,因为我们现在想要达到最后的.。我们可以通过回溯(在下一步中)到达那里
  • (\..*) - 匹配点,随后出现0+任何字符,但在第3组
  • $换行符和存储的 - 断言的字符串的结尾

输出:

之前更换:

enter image description here

更换后:

enter image description here

1

不知道它是用记事本+ +兼容,但这个表达式应该做他的工作:

((?:"[^"]*){4}").*(\..*) 

与更换:

\1\2 

实例和解释:https://regex101.com/r/yBuUOj/3

+0

的感谢!你的初始版本(现在删除)工作正常:'((?:“[^”] *){4}“)[^”] * \。(。*)'(删除最后一个'.',但(***你当前的版本'((?:“[^”] *){4}“)。* \。(。*)'使得一些误识) – user3026965

+0

对不起,我做了一些复制和粘贴这里之间的混乱和regex101 –

+1

感谢您的线。谢谢! – user3026965

相关问题