前瞻/后视问题

我有字符串:" to " 并想用空格分割它,但空格不能在 <> 内。所以我正在寻找的输出是 3 个字符串:


<a b>

to

<c>

我知道我应该使用后视和前视来检查 <> 内是否有空格,但不知何故我不知道如何构造这样的正则表达式。


Regex.Matches("<a b> to <c>", @"(?<!<.*?)\s+(?!.*?>)") // Doesn't match space only before and after to

请问有什么建议吗?


梦里花落0921
浏览 190回答 2
2回答

桃花长相依

此模式可能适合您的需求:(<.+?>)|((?<=>).+?(?=<))基本上我们匹配<text>或(参见|)出现在两个结束括号之间的文本

茅侃侃

您可以使用一种Regex.Split带有正则表达式的方法,该方法在前面没有<(以及除<and之外的任何 0+ 个字符>)并且没有跟在>(前面有 0+ 个除<and之外的字符)时匹配一个或多个空白字符>:var&nbsp;results&nbsp;=&nbsp;Regex.Split(s.Trim(),&nbsp;@"(?<!<[^<>]*)\s+(?![^<>]*>)");查看正则表达式演示细节(?<!<[^<>]*)-一个负回顾后失败如果匹配,应立即到左边的当前位置,有一个<注视着0+字符比其他<和>\s+&nbsp;- 1+ 个空白字符(?![^<>]*>)-如果在当前位置的右侧,除了and和 then之外还有 0+ 个字符,则匹配失败的负前瞻。<>>
打开App,查看更多内容
随时随地看视频慕课网APP