gpt4 book ai didi

sed - 正则表达式 - 可以替换匹配组的一部分吗?

转载 作者:行者123 更新时间:2023-12-04 17:12:49 25 4
gpt4 key购买 nike

是否可以替换匹配组的一半或 x 个字符?

我有一个部分电子邮件捕获的请求,所以像 example123@abcdef.com 变成了 ***mple123@***def.com

如果@前后的字符都是3个字符长,我可以这样做,

([^|@]{0,3})([^]{0,3})

这完美地捕获了 123@abc.com,我可以替代 ***@***.com 但如果它的每一端超过 3 个字符,例如 example123@abcdef.com 它变成了 ******e123@abcdef.com

我能看到的另一种方法是捕获 @ 之前的所有内容以及 . 的所有内容,但这不会是部分捕获。这可能吗?

最佳答案

你可以使用

sed -E 's/^[^@]{0,3}|(@)[^.]{0,3}/\1***/g'

详细信息

  • -E - 启用不需要太多转义的 POSIX ERE 语法
  • ^[^@]{0,3} - 除了字符串开头的 @ 之外的任何字符出现零到三次
  • | - 或者
  • (@) - 第 1 组:一个 @ 字符
  • [^.]{0,3} - 除 之外的任何字符出现零到三次。
  • \1*** 替换为第 1 组值 + ***

关于sed - 正则表达式 - 可以替换匹配组的一部分吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69157721/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com