c# - 匹配未由 & 和 ; 包围的文本

标签 c# .net regex

我目前正在使用以下正则表达式:

(?<!&)[^&;]*(?!;)

要匹配这样的文本:

match1&lt;match2&gt;

并提取:

  1. match1
  2. match2

但是,这似乎匹配了额外的五个空字符串。请参阅Regex Storm.

如何才能只匹配上面列出的两个?


请注意,@xanatos 的现有模式 ( (?<=^|;)[^&]+ ) 将仅匹配以下字符串中的第 1 到 3 个匹配项,而不匹配第 4 个匹配项:

match1&lte;match2&lt;match;3&#43;match&4

最佳答案

尝试将 * 更改为 +:

(?<!&)[^&;]+(?!;)

Test here

更正确的正则表达式:

(?<=^|;)[^&]+

Test here

这里的基本思想是,“好的”子字符串从字符串的开头 (^) 或 ; 之后开始,并在遇到& ([^&]+)。

第三个版本...但是在这里我们展示了如果您遇到问题并且决定使用正则表达式,那么现在您有两个问题:

(?<=^|;)([^&]|&(?=[^&;]*(?:&|$)))+

Test here

关于c# - 匹配未由 & 和 ; 包围的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42272417/

相关文章:

c# - 在一组时间之间随机 sleep

c# JavaScriptConverter - 如何反序列化自定义属性?

javascript - 将 jQuery 添加到母版页

c# - 如何在 .NET 中引发事件查看器 "Event"?

Python 正则表达式不匹配。 (点)作为字符

c# - 使用 AES/Rijndael 在 PHP 中加密,在 C# (WP7/Silverlight) 中解密

c# - 使用 WebKit.NET 读取 header 中的链接

c# - 将 C++ 项目转换为 DLL 以在 C# 应用程序中使用

javascript - 正则表达式中只允许某些非字母字符

javascript - 正则表达式 url 无法识别