[英]VB regex extract strings between brackets and store in array
我有以下格式的原始數據:
<&70> <+> <&10> <+>。002 <&70> <+> B <&70> <+> A <+> <&90>
我想使用VB提取<
和>
之間的上下文並將它們存儲在數組中,例如{&70,+,&10,+, ... }
然后,我想對不在括號之間的項目執行相同的操作,也將其存儲在{.002, B, A}
這樣的數組中
有誰知道我如何使用正則表達式來做到這一點?
預先存儲在數組中可能會很困難,因為您不知道它們的大小。 但是您可以改用List(Of String)
(如果真正需要,可以在最后一步調用ToArray extension method
)
使用sln給定的正則表達式(為什么比我做的要好得多),您需要使用Regex.Matches (或實例副本,如果您想預先創建並編譯正則表達式) 遍歷數據中的所有匹配項
然后,如果當前匹配項具有指示的組(如sln的正則表達式說明中所示,為1或2),則將其添加到相應的列表中。
Dim rawData As String = "<&70><+><&10><+>.002<&70><+>B<&70><+>A<+><&90>"
Dim betweenBrackets As New List(Of String)
Dim outsideBrackets As New List(Of String)
For Each m As Match In Regex.Matches(rawData, "<([^>]*)>|((?:(?!<[^>]*>)[\S\s])+)")
If m.Groups(1).Success Then betweenBrackets.Add(m.Groups(1).Value)
If m.Groups(2).Success Then outsideBrackets.Add(m.Groups(2).Value)
Next
我將在全局搜索中同時執行這兩個操作。
如果第1組匹配,則推入括號數組,
如果第2組匹配,則推入非括號數組。
# <([^>]*)>|((?:(?!<[^>]*>)[\S\s])+)
<
( [^>]* ) # (1)
>
|
( # (2 start)
(?:
(?! < [^>]* > )
[\S\s]
)+
) # (2 end)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.