【问题标题】:How to replace some characters after a specific character to another specific character in one big sql line in notepad++如何在记事本++中的一个大sql行中将特定字符之后的某些字符替换为另一个特定字符
【发布时间】:2021-09-09 11:31:59
【问题描述】:

我有一个包含数千名用户的大 sql 文件,如下所示:

('someone1@mydomain.com','{SSHA512}JWHCqHzazH2vGneLPfhMKkoAamzvxdNCWYOlhZ+uDx36jHdoMXwQmbEemvUMn7ZG6c9+22noXjjb2hAb99/5A/slscDJPKav','','en_US','maildir','Maildir','/home/vmail','vmail1','mydomain.com/someone1/',0,'mydomain.com','','','normal','',0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,NULL,'1970-01-01 01:01:01',0,'',NULL,NULL,'2020-03-19 13:15:58','2015-08-03 06:11:53','2020-03-19 13:15:58','9999-12-31 00:00:00',1'someone1'),
('someone2@mydomain.com','{SSHA512}UoMeyocmdC2DxM0S7B4WFdjnCNuvkngzzLus33h9nugKVlvdhlcboKmMDDuAkCHEyLBUgf8DicKWFPJVS7EOF/ytv27MQ3Ch','','en_US','maildir','Maildir','/home/vmail','vmail1','mydomain.com/someone2/',0,'mydomain.com','','','normal','',0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,NULL,'1970-01-01 01:01:01',0,'',NULL,NULL,'2015-12-17 12:27:35','2015-08-03 06:44:10','2021-06-08 06:55:33','9999-12-31 00:00:00',1'someone2'),
('someone3@mydomain.com','{SSHA512}A6ToCf4OfP3XNEU9ngEmGN/LDquH9+s9Qxme3SoJaDyVvxiWpnwwTiAALSdnmhIxDB2VQK0zhdF+jP8ARvh0N3IDL0Xv/KmL','','en_US','maildir','Maildir','/home/vmail','vmail1','mydomain.com/someone3/',0,'mydomain.com','','','normal','',0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,NULL,'1970-01-01 01:01:01',0,'',NULL,NULL,'2018-04-03 12:31:09','2015-08-03 06:50:01','2018-04-03 12:31:18','9999-12-31 00:00:00',1'someone3'),
('someone4@mydomain.com','{SSHA512}t7/JbUPQ+rtKeRTgWRH6KlETr2JsqYORBOZouzOzs4Wo6YfHYLoy0m+U4kZXk+AeNgMep2hGZSodPZdK2l2bn9MhOKHOuF/L','','en_US','maildir','Maildir','/home/vmail','vmail1','mydomain.com/someone4/',0,'mydomain.com','','','normal',''0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,NULL,'1970-01-01 01:01:01',0,'',NULL,NULL,'2020-03-18 07:48:26','2016-11-14 06:59:04','2021-06-08 05:54:28',9999-12-31 00:00:00',1'someone4')

现在我需要删除每个与 1 相邻的用户的最后一个单词('someone1'、'someone2'、'someone3'、'someone4')。它看起来像

....9999-12-31 00:00:00',1)

不像原来的

....9999-12-31 00:00:00',1'someone1')
....9999-12-31 00:00:00',1'someone2') 

但不要忘记它们不在不同的行中。所有这一切都在一条大线上,这让我想请你帮忙。非常感谢。

【问题讨论】:

    标签: sql search replace notepad++


    【解决方案1】:

    似乎(从您的示例中)行不包含任何括号,除了它们的开始和结束字符。因此,您可以搜索一个引号',以及多个字母和/或数字,以及一个引号',而不是)

    为此;

    • 在 Notepad++ 中使用 ctrl+h 快​​捷方式打开替换窗口
    • 从搜索模式部分选择正则表达式
    • '[a-zA-Z0-9]*?[-,_,.]*?[a-zA-Z0-9]*?[-,_,.]*?[a-zA-Z0-9]*?[-,_,.]*?[a-zA-Z0-9]*?'\)来查找什么框
    • '\)替换为方框
    • 点击全部替换按钮。

    如果用户名由字母或数字组成,并且_-. 最多 3 次,则此方法有效。

    请确保您有原始文件的副本作为备份。并且还要注意,如果任何行包含除结尾之外的右括号,我们使用的正则表达式可能会找到不相关的部分。

    【讨论】:

    • 这还不错,但用户名包含点或 _ 或 - 符号和 '[a-zA-Z0-9]*?') 这对我不起作用。谢谢你的回答。
    • 用户名是否包含多个符号?
    • 我更新了我的答案以处理最多包含 3 个符号的用户名。
    • 否 在 99% 的情况下,我的用户名只有“-”、“_”和“。”这个符号。
    • 看看我更新的答案,您可以扩展该正则表达式来处理其他符号。
    猜你喜欢
    • 1970-01-01
    • 2021-11-05
    • 2015-08-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多