使用regex.replace替换电子邮件地址

时间:2014-01-04 06:24:04

标签: regex vb.net visual-studio-2010 visual-studio

基本上我需要从文件中找到一个电子邮件地址,并用电子邮件标签替换电子邮件地址,例如,

`Joeri.DeVos@imec.be`

上述地址应替换为以下行

<email>Joeri.DeVos@imec.be</email>

我试过了,

Dim strFile As String = File.ReadAllText(TextBox1.Text & "\" & parentFolder & ".xml")
        strFile = Regex.Replace(strFile, "\<[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z][A-Za-z][A-Za-z]?[A-Za-z]?\>", "<email>\<[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z][A-Za-z][A-Za-z]?[A-Za-z]?\></email>")
    File.WriteAllText(TextBox1.Text & "\" & parentFolder & ".xml", strFile)

但是我无法对文件进行更改,而且正则表达式与记事本++中的电子邮件地址匹配

任何具有所需逻辑的人都会非常有帮助,

提前致谢

1 个答案:

答案 0 :(得分:1)

您的示例似乎希望将电子邮件作为标记,例如

stuff<email@domain.tld>stuff

stuff<email><email@domain.tld></email>stuff

“regex.replace”的文档显示了以下格式:

Dim strFile As String = File.ReadAllText(TextBox1.Text & "\" & parentFolder & ".xml")
Dim rex as new regex("([A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z][A-Za-z][A-Za-z]?[A-Za-z]?)")
    strFile = rex.Replace(strFile, "<email>$0</email>")
File.WriteAllText(TextBox1.Text & "\" & parentFolder & ".xml", strFile)

你可能会像这样做一个if / else正则表达式:

Dim strFile As String = File.ReadAllText(TextBox1.Text & "\" & parentFolder & ".xml")
Dim rex as new regex("([A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z][A-Za-z][A-Za-z]?[A-Za-z]?)")
Dim rex2 as new regex("(anotherRexEx expression here)")

If rex.IsMatch(strFile) Then
  strFile = rex.Replace(strFile, "<email>$0</email>")
ElseIf rex2.IsMatch(strFile) Then
  strFile = rex2.Replace(strFile, "<tag>$0</tag>")
ElseIf etc... Then
  strFile = etc...
Else
   etc...
End If
File.WriteAllText(TextBox1.Text & "\" & parentFolder & ".xml", strFile)