【问题标题】:vb.net Regexp Split comma separated Stringvb.net 正则表达式拆分逗号分隔的字符串
【发布时间】:2014-02-14 18:32:57
【问题描述】:

我有一个String,其中包含一个邮件地址列表,如下所示:

Dim address1 As String = """Merkel, Angela"" <angela@example.com>, ""Peter Altmeyer"" <peter@example.com>"

我想要归档的是用逗号分隔String。我想我需要Regexp.Split 因此,但我不知道,我到底要做什么才能得到输出数组

"Merkel, Angela" <angela@example.com>
"Peter Altmeyer" <peter@example.com>

我对双引号"" 转义引号感到特别困惑。这在正则表达式中也是这样转义的吗?

【问题讨论】:

    标签: .net regex vb.net


    【解决方案1】:

    您可以使用String.Split 方法简单地做到这一点,方法是将“>”包含在分隔符(>、“)中;但是“>”将在结果中丢失,必须重新添加。

    使用正则表达式,您可以这样做:

    Dim parts() As String = Regex.Split(address1, "(?<=>),\s")
    

    这里我使用的是正则表达式模式

    (?<=prefix)find
    

    查找前缀后面的位置。结果不包括前缀。因此,只有 ", " 会从输出中删除,而 ">" 仍然存在。

    【讨论】:

    • 不,这会像 "Merkel 和 Angela" &lt;angela@example.com&gt; 一样将第一个地址分块
    【解决方案2】:

    您可以在此 RegEx 上拆分:(?&lt;=&gt;),\s*?(?="")。它发现逗号(后面有零个或多个空格)前面是&lt;,后面是""。

    【讨论】:

      【解决方案3】:
      Dim address1 As String = """Merkel, Angela"" <angela@example.com>, ""Peter Altmeyer""     <peter@example.com>"
      Dim parts() As String = Regex.Split(address1, "(?<=>),\s*?(?="")")
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-11-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-20
        • 1970-01-01
        • 2013-06-21
        相关资源
        最近更新 更多