我有一个用户将输入部件号的框,我想要这样做,以便他们可以使用逗号或分号符号(这个;样式; |或,这个,样式)将其写成一行但是也可以使用回车并在文本框中创建列表。我有一个模式适用于所有我需要除了在新行打破((\ 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
除了在换行符之外,这对所有人都有用。
答案 0 :(得分:1)
\s
匹配换行符号。您只需要匹配水平空格。
将\s
替换为\p{Zs}
。
(\w+\p{Zs}*[\p{P}\p{S}-[;,]]*\p{Zs}*)+
请参阅regex demo
用
this; style;|or, this, style
more
输出结果为: