nanoFramework.System.Text.RegularExpressions 1.1.51

前缀已保留
dotnet add package nanoFramework.System.Text.RegularExpressions --version 1.1.51                
NuGet\Install-Package nanoFramework.System.Text.RegularExpressions -Version 1.1.51                
此命令旨在在 Visual Studio 的包管理器控制台中使用,因为它使用 NuGet 模块版本的 Install-Package
<PackageReference Include="nanoFramework.System.Text.RegularExpressions" Version="1.1.51" />                
对于支持 PackageReference 的项目,请将此 XML 节点复制到项目文件中以引用包。
paket add nanoFramework.System.Text.RegularExpressions --version 1.1.51                
#r "nuget: nanoFramework.System.Text.RegularExpressions, 1.1.51"                
#r 指令可用于 F# Interactive 和多语言笔记本。请将此复制到交互式工具或脚本的源代码中以便引用包。
// Install nanoFramework.System.Text.RegularExpressions as a Cake Addin
#addin nuget:?package=nanoFramework.System.Text.RegularExpressions&version=1.1.51

// Install nanoFramework.System.Text.RegularExpressions as a Cake Tool
#tool nuget:?package=nanoFramework.System.Text.RegularExpressions&version=1.1.51                

Quality Gate Status Reliability Rating License NuGet #yourfirstpr Discord

nanoFramework logo


欢迎使用 .NET nanoFramework System.Text.RegularExpressions 存储库

构建状态

组件 构建状态 NuGet 包
System.Text.RegularExpressions Build Status NuGet

重要:此正则表达式解析器将涵盖您的大部分需求。当模式复杂且不全面兼容时,它有一些限制。这是一个持续的工作,主要基于 .NET 微型框架实现。如有任何问题,请不要犹豫提出。也欢迎任何帮助改进此解析器的建议。

测试 中,您将找到高级测试,到目前为止只有一个失败。帮助固定解析器所需的!

用法

与完整框架的兼容性很高。《Match》和《Group》类的工作方式与您预期的一样。以下示例给出了一些用法示例

// The example displays the following output:
//       Match: This is one sentence.
//          Group 1: 'This is one sentence.'
//             Capture 1: 'This is one sentence.'
//          Group 2: 'sentence'
//             Capture 1: 'This '
//             Capture 2: 'is '
//             Capture 3: 'one '
//             Capture 4: 'sentence'
//          Group 3: 'sentence'
//             Capture 1: 'This'
//             Capture 2: 'is'
//             Capture 3: 'one'
//             Capture 4: 'sentence'
string pattern = @"(\b(\w+?)[,:;]?\s?)+[?.!]";
string input = "This is one sentence. This is a second sentence.";

Match match = Regex.Match(input, pattern);
Debug.WriteLine("Match: " + match.Value);
int groupCtr = 0;
foreach (Group group in match.Groups)
{
    groupCtr++;
    Debug.WriteLine("   Group " + groupCtr + ": '" + group.Value + "'");
    int captureCtr = 0;
    foreach (Capture capture in group.Captures)
    {
        captureCtr++;
        Debug.WriteLine("      Capture " + captureCtr + ": '" + capture.Value + "'");
    }
}

另一个使用 Split 的示例

regex = new Regex("[ab]+");
acutalResults = regex.Split("xyzzyababbayyzabbbab123");
for (int i = 0; i < acutalResults.Length; i++)
{
    Debug.WriteLine($"{acutalResults[i]}");
}
// The results will be:
// xyzzy
// yyz
// 123

您还可以使用 Replace 函数

regex = new Regex("a*b");
actual = regex.Replace("aaaabfooaaabgarplyaaabwackyb", "-");
Debug.WriteLine($"{actual}");
regex = new Regex("([a-b]+?)([c-d]+)");
actual = regex.Replace("zzabcdzz", "$1-$2");
Debug.WriteLine($"{actual}");
// The result will be:
// -foo-garply-wacky-
// zzab-cdzz

下一个示例显示了使用选项的可能性

regex = new Regex("abc(\\w*)");
Debug.WriteLine("RegexOptions.IgnoreCase abc(\\w*)");
regex.Options = RegexOptions.IgnoreCase;
if (regex.IsMatch("abcddd"))
{
    Debug.WriteLine("abcddd = true");
}
regex = new Regex("^abc$", RegexOptions.Multiline);
if (regex.IsMatch("\nabc"))
{
    Debug.WriteLine("abc found!");
}
// The result will be:
// abcddd = true
// abc found!

经过验证的正则表达式

测试中您会发现使用了某些正则表达式。这些或许会很有用

  • 电子邮件地址: ([\w\d_.\-]+)@([\d\w\.\-]+)\.([\w\.]{2,5})
  • http(s) URL: (https?:\/\/)([\da-z-._]+)/?([\/\da-z.-]*) (限制:URL必须以“/”结尾才能正确提取,这是我们的引擎中的一个bug,它在与“^”和“$”之间的表达式之间运行得非常好)
  • MD5: [a-f0-9]{32}
  • SHA256: [A-Fa-f0-9]{64}
  • 简单的XML标签: <tag>[^<]*</tag>
  • GUID: [{]?[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}[}]?
  • 日期时间如2021-04-10 18:08:42: (\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})

已知限制

此解析器是简单的,这些元素中的一些不受支持

  • (?<word>\w+)之类的表达式将不会工作。虽然支持分组,但名称化组或元素前的?不受支持。
  • 对于某些字符,当使用转义版本如\.时,您可能遇到问题,可以使用.代替。
  • 有时字符的顺序可能会产生影响。如果您在这种情况下,请尝试在字符类如[a-z-._]中更改字符的顺序。

反馈和文档

有关文档、提供反馈、问题和技术支持,请参阅主仓库

加入我们的Discord社区这里

致谢

该项目贡献者名单可在CONTRIBUTORS中找到。

许可证

nanoFramework 类库遵循MIT许可证

请检查此存储库中文件的标题,部分代码受Apache License 2.0许可。

行为准则

此项目已采纳贡献者公约中定义的行为准则,以阐明社区中的预期行为。有关更多信息,请参阅.NET Foundation行为准则

.NET Foundation

此项目由.NET Foundation支持。

产品 兼容和额外的计算目标框架版本。
.NET Framework net是兼容的。
兼容目标框架(s)
包含的目标框架(s)(在包中)
了解更多关于目标框架.NET Standard的信息。

NuGet 包 (2)

显示依赖于 nanoFramework.System.Text.RegularExpressions 的顶部 2 个 NuGet 包

下载
DevBot9.NanoFramework.Homie

为 nanoFramework 实现的 Homie。

DevBot9.NanoFramework.Homie.Utilities

为 nanoFramework 实现的 Homie。

GitHub 存储库

此包不在任何流行的 GitHub 存储库中。

版本 下载 最后更新
1.1.51 449 11/9/2023
1.1.37 760 12/28/2022
1.1.26 486 10/26/2022
1.1.24 385 10/25/2022
1.1.22 373 10/24/2022
1.1.20 396 10/23/2022
1.1.14 449 9/16/2022
1.1.9 516 8/11/2022
1.1.7 474 6/10/2022
1.1.3 428 5/2/2022
1.0.5-preview.3 170 1/4/2022
1.0.4 308 12/3/2021
1.0.4-preview.16 140 12/3/2021
1.0.4-preview.14 135 12/3/2021
1.0.4-preview.12 136 12/2/2021
1.0.4-preview.10 139 12/2/2021
1.0.4-preview.8 129 12/2/2021
1.0.4-preview.1 160 8/2/2021
1.0.3 320 8/2/2021
1.0.3-preview.4 152 8/2/2021
1.0.2 1,008 7/16/2021
1.0.0-preview.33 173 7/16/2021
1.0.0-preview.28 176 6/1/2021
1.0.0-preview.24 165 4/10/2021
1.0.0-preview.22 146 3/31/2021
1.0.0-preview.21 185 3/26/2021
1.0.0-preview.20 192 3/26/2021