查找标记名称并将其传输到数组

时间:2017-12-01 14:19:44

标签: regex vb.net

我需要一种从富文本框中分割字符串的方法,该文本框包含一些"标记"像这样:

<Name>Peter<Type>ABC<Date>20171112

结果,我想要一些看起来像这样的东西:

  1. Name
  2. Type
  3. Date
  4. 我不需要标签之间的值。我只需要<>个字符内的代码名称。我不太确定如何解决这个问题。

2 个答案:

答案 0 :(得分:1)

模式(?<=<)[^>]+(?=>)将适用于此。例如:

Dim input As String = "<Name>Peter<Type>ABC<Date>20171112"
Dim pattern As String = "(?<=<)[^>]+(?=>)"
Dim result() As String = Regex.Matches(input, pattern).
    Cast(Of Match).
    Select(Function(m) m.Value).
    ToArray()

以下是对其工作原理的概述:

  • (?<=<) - 后面断言匹配必须以<字符开头
  • [^>]+ - 匹配所有文字,直到下一个>字符
  • (?=>) - 前瞻断言匹配必须后跟一个尾随的>字符

答案 1 :(得分:0)

您可以使用\<(.*?)\>

Dim input = "<Name>Peter<Type>ABC<Date>20171112"
Dim result As String() = Regex.Matches(input, "\<(.*?)\>").Cast(Of Match)().
    Select(Function(m) m.Value.Trim("<"c, ">"c)).
    ToArray()