我有一个这样的文本文件:
dev1
所以文本(多行)由" ::"分隔。我想找到两者之间的比赛。也许最好的方法是替换" ::"用一个字符然后在VB.Net中使用split方法。但我想知道是否可以使用正则表达式来完成这一点,如下所示:
::content1 ...
...
::content2 ...
...
::content3 ...
...
这似乎很容易,但我无法找到正确的正则表达式。
修改 有人问我已经尝试了什么。我尝试过负面预测,但它不起作用。 (我使用[\ S \ s]代替"。",因为我理解句号与新行字符不匹配。也许这是我对正则表达式的不了解。)
Dim myRegex as RegEx = new Regex("...")
m = myRegex.Match(content)
Do While m.Success
...
m = m.NextMatch()
Loop
答案 0 :(得分:1)
请注意,::(?![\S\s]+::)[\S\s]+
模式与::
匹配后未跟随任何1个字符([\s\S]+
),后跟::
,然后匹配任何1个字符。这使得模式找到了最后的::
以及之后的内容。
请注意,在这种情况下,您可能真的没有正则表达式如果 ::
总是分隔内容。这是一种方法:
Dim result As String() = str.Split(New String() {"::"}, StringSplitOptions.RemoveEmptyEntries)
如果要与行的开头的::
分开,可能需要使用像
Dim result As List(Of String) = Regex.Split(str, "^::", RegexOptions.Multiline).Where(
Function(m) String.Equals(m.Trim(), String.Empty) = False).ToList()
其中RegexOptions.Multiline
会使^
与行的开头匹配,而不是字符串的开头。
答案 1 :(得分:0)
无需使用正则表达式。按::
分割文字。
content.Split("::")