使用正则表达式匹配所有字符,但以逗号分号和换行符断开

时间:2016-02-03 22:43:05

标签: regex vb.net

我有一个用户将输入部件号的框,我想要这样做,以便他们可以使用逗号或分号符号(这个;样式; |或,这个,样式)将其写成一行但是也可以使用回车并在文本框中创建列表。我有一个模式适用于所有我需要除了在新行打破((\ w + \ s * [\ p {P} \ p {S} - [;,]] \ s ) +)我尝试过多种组合(\ r \ n | \ r | \ n)。我尝试过使用单行格式。没有什么工作,我找不到任何关于如何打破换行符。

以下是处理此事项的子项目:

Private Sub MyTextBox_TextChanged(sender as object, e as TextChangedEventArgs) Handles MyTextBox.TextChanged
    Dim pattern As String = "(\w+\s*[\p{P}\p{S}-[;,]]*\s*)+"
        MyListBox.Items.Clear()
        For Each Match As Match In Regex.Matches(DirectCast(sender, TextBox).Text, pattern)
            If Match.Value.Length > 20 Then
                MyListBox.Items.Add(Match.Value.Remove(20))
            Else
                MyListBox.Items.Add(Match.Value)
            End If
        Next
End Sub

除了在换行符之外,这对所有人都有用。

1 个答案:

答案 0 :(得分:1)

\s匹配换行符号。您只需要匹配水平空格。

\s替换为\p{Zs}

(\w+\p{Zs}*[\p{P}\p{S}-[;,]]*\p{Zs}*)+

请参阅regex demo

this; style;|or, this, style
more

输出结果为:

enter image description here