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

时间:2017-06-13 14:04:08

标签: php regex preg-replace

我想解析很多文本并用***替换标记的特定部分。

更多细节我想用***:

替换下面标签中的电子邮件的第一部分
From: abcdef@mydomaine.com

我希望它是:

From: ***@mydomaine.com

请注意,此标记可能如下:

From: abcdef@mydomaine.com

From: <abcdef@mydomaine.com>

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

我想用***替换此标签中电子邮件的第一部分。 我尝试使用preg_replace,但我不喜欢使用正则表达式

1 个答案:

答案 0 :(得分:3)

使用以下模式

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

并将其替换为

$1$2***$3

详细说明:

  • (From:)匹配字符串From:,将字面意义捕获到第一组($1
  • ([^<@]+<)?会匹配第一次出现<的某些文字。由于此部分是可选的,因此使用?。匹配在第二组($2
  • 中捕获
  • [^@]+匹配任何字符,直到第一个@
  • (@)按字面意思匹配@并将其捕获到第三组($3

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