使用正则表达式替换字符串的一部分

replace a part of a string using regex

我想解析大量文本并用 *** 替换标签的特定部分。

更详细地说,我想用 *** 替换下面标签中电子邮件的第一部分:

From: abcdef@mydomaine.com

我希望它是:

From: ***@mydomaine.com

请记住,此标签可能类似于:

From: abcdef@mydomaine.com

From: <abcdef@mydomaine.com>

From: hello bla bla <abcdef@mydomaine.com>

我想始终用 *** 替换此标签中电子邮件的第一部分。 我试过 preg_replace 但我不擅长正则表达式

使用以下模式

(From:)([^<@]+<)?[^@]+(@)

并将其替换为

***

详情:

  • (From:) 匹配字符串 From: 从字面上将其捕获到第一组 (</code>)</li> <li><code>([^<@]+<)? 匹配某些文本,直到第一次出现 <。由于这部分是可选的,因此使用 ?。比赛在第二组中被捕获 (</code>)</li> <li><code>[^@]+ 匹配第一个 @
  • 之前的任何字符
  • (@) 按字面匹配 @ 并将其捕获到第三组 ()

演示:https://regex101.com/r/KDzb8z/1