正则表达式拆分字符串不包括连字符

时间:2014-05-15 11:57:40

标签: regex vb.net split

我有一个全名作为输入,并希望逐字拆分整个全名,但它应该:

  1. 如果包含连字符,请不要拆分单词,例如REES-MOGG
  2. 如果包含下划线,例如REES_MOGG
  3. ,则应该拆分

    HYPHEN
    例如:

    MRS C REES-MOGG
    

    结果:

    MRS
    C
    REES-MOGG
    

    UNDERSCORE
    例如:

    MRS C REES_MOGG
    

    结果:

    MRS
    C
    REES
    MOGG
    

    我目前正在使用以下代码,但徒劳无功:

    Dim str As String() = Regex.Split(names, "\s+")
    

5 个答案:

答案 0 :(得分:1)

只需在"\s+|_"上拆分,它将在空白处和下划线上分开。你的代码是:

Dim str As String() = **Regex.Split(names, "\s+|_")**

Demo

也可以在&符号上拆分,只需将|\&添加到字符串中:

Dim str As String() = **Regex.Split(names, "\s+|_|\&")**

Demo

答案 1 :(得分:1)

使用它:

Dim str As String() = Regex.Split(names, "[\s_]+")

答案 2 :(得分:1)

Dim str As String() = names.Split({" ", "_", "&", vbTab}, StringSplitOptions.RemoveEmptyEntries)

答案 3 :(得分:0)

为了让您的脚本在空白和下划线上分割,您只需在正则表达式中的空白字符[ ]周围添加一个字符组\s,然后添加任何其他符号你想吐进那个小组。

Dim str As String() = Regex.Split(names, "[\s_]+")

答案 4 :(得分:0)

我对VB .NET了解不多,但你肯定应该更改你的RegEx。

这是一个例子,虽然我在Javascript上测试过。

Dim matchForHyphen As MatchCollection = Regex.Matches("MRS C REES-MOGG","[\w]*[^_]*")
Dim matchForUnderscore As MatchCollection = Regex.Match("MRS C REES_MOGG","[\w]*[^_]*")

然后你应该遍历Match对象以获得结果。  例如。 forFor循环中的matchForHyphen [i]。或者For Each声明

希望有所帮助