Files
xyou f70b061d1a
CI / Go Backend (push) Canceled after 0s
feat: 项目初始化 + 3D方块世界原型 + AI助搭系统
初始化 monorepo: Go后端(7微服务) + Unity客户端(9模块) + 启动器

HTML5原型: Three.js 3D体素世界, Perlin噪声地形, 原版材质, 22种方块

Minecraft创造模式背包: 双栏布局, 拖拽移动物品, 方向性元件引脚

AI助搭策划文档 + 客户端/服务端骨架 + Docker Compose + CI
2026-08-08 14:07:56 +08:00

247 lines
12 KiB
C#

using System.Text.RegularExpressions;
namespace PCL.Core.Utils;
/// <summary>
/// 基于代码生成优化的正则表达式实例。
/// </summary>
public static partial class RegexPatterns
{
/// <summary>
/// 陶瓦联机 ID。
/// </summary>
public static readonly Regex TerracottaId = _TerracottaId();
[GeneratedRegex("([0-9A-Z]{5}-){4}[0-9A-Z]{5}", RegexOptions.IgnoreCase)]
private static partial Regex _TerracottaId();
/// <summary>
/// 换行符,包括 <c>\r\n</c> <c>\n</c> <c>\r</c> 三种。
/// </summary>
public static readonly Regex NewLine = _NewLine();
[GeneratedRegex(@"\r\n|\n|\r")]
private static partial Regex _NewLine();
/// <summary>
/// ISO 8601 当日终点时间写法 24:00(:00)(.0…),语义等于次日零点。
/// </summary>
public static readonly Regex Iso8601EndOfDay = _Iso8601EndOfDay();
[GeneratedRegex(@"[Tt]24:00(?::00(?:\.0+)?)?(?=[Zz+\-]|$)")]
private static partial Regex _Iso8601EndOfDay();
/// <summary>
/// Semantic Versioning (SemVer) 规范的版本号,包含可选的 v 前缀。
/// </summary>
public static readonly Regex SemVer = _SemVer();
private const string PatternSemVer =
@"^v?(?<major>0|[1-9]\d*)\.(?<minor>0|[1-9]\d*)\.(?<patch>0|[1-9]\d*)" +
@"(?:-(?<prerelease>(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?" +
@"(?:\+(?<build>[0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$";
[GeneratedRegex(PatternSemVer, RegexOptions.ExplicitCapture)]
private static partial Regex _SemVer();
/// <summary>
/// 简单匹配 HTTP(S) URI,若需严格检查请使用 <see cref="FullHttpUri"/>。
/// </summary>
public static readonly Regex HttpUri = _HttpUri();
private const string PatternHttpUri = @"^https?://(?:\[[^\]\s]+\]|[^/\s?#:]+)(?::\d{1,5})?(?:/[^\s?#]*)?(?:\?[^\s#]*)?(?:#\S*)?$";
[GeneratedRegex(PatternHttpUri, RegexOptions.IgnoreCase | RegexOptions.CultureInvariant)]
private static partial Regex _HttpUri();
/// <summary>
/// 包含完整规则的 HTTP(S) URI,含有 <c>scheme</c> <c>host</c> <c>ipv6</c>
/// <c>port</c> <c>path</c> <c>query</c> <c>fragment</c> 分组。
/// </summary>
public static readonly Regex FullHttpUri = _FullHttpUri();
private const string PatternFullHttpUri =
@"^(?<scheme>https?)://(?<host>localhost|(?:(?:25[0-5]|2[0-4]\d|1?\d?\d)(?:\.(?:25[0-5]|2[0-4]\d|1?\d?\d)){3})" +
@"|\[(?<ipv6>[0-9A-Fa-f:.]+)\]|(?:(?:[A-Za-z0-9](?:[A-Za-z0-9\-]{0,61}[A-Za-z0-9])?\.)+(?:[A-Za-z]{2,63}|xn--[" +
@"A-Za-z0-9\-]{2,59})))(?::(?<port>6553[0-5]|655[0-2]\d|65[0-4]\d{2}|6[0-4]\d{3}|[1-5]\d{4}|[1-9]\d{0,3}))?" +
@"(?<path>/[^\s?#]*)?(?:\?(?<query>[^\s#]*))?(?:#(?<fragment>[^\s]*))?$";
[GeneratedRegex(PatternFullHttpUri, RegexOptions.ExplicitCapture | RegexOptions.IgnoreCase | RegexOptions.CultureInvariant)]
private static partial Regex _FullHttpUri();
/// <summary>
/// LastPending(_Xxx).log 路径。
/// </summary>
public static readonly Regex LastPendingLogPath = _LastPendingLogPath();
[GeneratedRegex(@"\\LastPending[_]?[^\\]*\.log$", RegexOptions.IgnoreCase)]
private static partial Regex _LastPendingLogPath();
/// <summary>
/// Mod Loader 不兼容的错误提示。
/// </summary>
public static readonly Regex IncompatibleModLoaderErrorHint = _IncompatibleModLoaderErrorHint();
[GeneratedRegex(@"(incompatible[\s\S]+'Fabric Loader' \(fabricloader\)|Mod ID: '(?:neo)?forge', Requested by '([^']+)')")]
private static partial Regex _IncompatibleModLoaderErrorHint();
/// <summary>
/// Minecraft 颜色代码,为 Hex 颜色代码,格式为 <c>#RRGGBB</c>。
/// </summary>
public static readonly Regex HexColor = _HexColor();
[GeneratedRegex("^#[0-9A-Fa-f]{6}$")]
private static partial Regex _HexColor();
/// <summary>
/// A compiled regular expression for matching Minecraft MOTD formatting codes.
/// Matches legacy color/format codes (e.g., §a, §b, §k) and hexadecimal color codes (e.g., #FF0000).
/// </summary>
public static readonly Regex MotdCode = _MotdCode();
[GeneratedRegex("(§[0-9a-fk-oAr]|#[0-9A-Fa-f]{6})")]
private static partial Regex _MotdCode();
public static readonly Regex BroadcastMotd = _BroadcastMotd();
[GeneratedRegex(@"\[MOTD\](.*?)\[/MOTD\]", RegexOptions.Compiled)]
private static partial Regex _BroadcastMotd();
public static readonly Regex BroadcastAd = _BroadcastAd();
[GeneratedRegex(@"\[AD\](.*?)\[/AD\]", RegexOptions.Compiled)]
private static partial Regex _BroadcastAd();
/// <summary>
/// 匹配 Minecraft 正常版本号,如 1.20.4、1.19.3 等。
/// </summary>
public static readonly Regex McNormalVersion = _McNormalVersion();
[GeneratedRegex(@"^\d+\.\d+\.\d+$|^\d+\.\d+$")]
private static partial Regex _McNormalVersion();
/// <summary>
/// 匹配 Minecraft 快照版本号,如 24w14a 等。
/// </summary>
public static readonly Regex McSnapshotVersion = _McSnapshotVersion();
[GeneratedRegex(@"(\d+)w(\d+)([a-z]?)")]
private static partial Regex _McSnapshotVersion();
/// <summary>
/// 匹配 Minecraft Indev 版本号,如 in-20091231-2、in-20100130 等。
/// </summary>
public static readonly Regex McIndevVersion = _McIndevVersion();
[GeneratedRegex(@"^in-(\d{8})(-(\d+))?$")]
private static partial Regex _McIndevVersion();
/// <summary>
/// 匹配 Minecraft Infdev 版本号,如 inf-20100611 等。
/// </summary>
public static readonly Regex McInfdevVersion = _McInfdevVersion();
[GeneratedRegex(@"^inf-(\d{8})(-(\d+))?$")]
private static partial Regex _McInfdevVersion();
/// <summary>
/// 匹配 accessToken 内容。
/// </summary>
public static readonly Regex AccessToken = _AccessToken();
[GeneratedRegex("(?<=accessToken ([^ ]{5}))[^ ]+(?=[^ ]{5})")]
private static partial Regex _AccessToken();
/// <summary>
/// 使用 IsMatch 检查是否存在中文字符
/// </summary>
public static readonly Regex HasChineseChar = _HasChineseChar();
[GeneratedRegex("[\u4e00-\u9fbb]")]
private static partial Regex _HasChineseChar();
/// <summary>
/// 用 Replace 替换英文中的分隔特征
/// </summary>
public static readonly Regex EnglishSpacedKeywords = _EnglishSpacedKeywords();
[GeneratedRegex("([A-Z]+|[a-z]+?)(?=[A-Z]+[a-z]+[a-z ]*)")]
private static partial Regex _EnglishSpacedKeywords();
/// <summary>
/// NTFS 8.3 文件名格式
/// </summary>
public static readonly Regex Ntfs83FileName = _Ntfs83FileName();
[GeneratedRegex(@".{2,}~\d")]
private static partial Regex _Ntfs83FileName();
public static readonly Regex UncPath = _UncPath();
[GeneratedRegex("""^\\\\[^\\/:*?"<>|]+\\[^\\/:*?"<>|]+(\\[^\\/:*?"<>|]+)*\\?$""")]
private static partial Regex _UncPath();
#region Minecraft 实例解析
public static readonly Regex OptiFineVersion = _OptiFineVersion();
[GeneratedRegex(@"(?<=HD_U_)[^"":/]+", RegexOptions.IgnoreCase | RegexOptions.CultureInvariant)]
private static partial Regex _OptiFineVersion();
public static readonly Regex OptiFineLibVersion = _OptiFineLibVersion();
[GeneratedRegex(@"(?<=HD_U_)[^"":/]+", RegexOptions.IgnoreCase | RegexOptions.CultureInvariant)]
private static partial Regex _OptiFineLibVersion();
public static readonly Regex LegacyFabricVersion = _LegacyFabricVersion();
[GeneratedRegex(@"(?<=(net.fabricmc:fabric-loader:))[0-9\.]+(\+build.[0-9]+)?", RegexOptions.IgnoreCase | RegexOptions.CultureInvariant)]
private static partial Regex _LegacyFabricVersion();
public static readonly Regex FabricVersion = _FabricVersion();
[GeneratedRegex(@"(?<=(net.fabricmc:fabric-loader:))[0-9\.]+(\+build.[0-9]+)?", RegexOptions.IgnoreCase | RegexOptions.CultureInvariant)]
private static partial Regex _FabricVersion();
public static readonly Regex QuiltVersion = _QuiltVersion();
[GeneratedRegex(@"(?<=(org.quiltmc:quilt-loader:))[0-9\.]+(\+build.[0-9]+)?((-beta.)[0-9]([0-9]?))", RegexOptions.IgnoreCase | RegexOptions.CultureInvariant)]
private static partial Regex _QuiltVersion();
public static readonly Regex CleanroomVersion = _CleanroomVersion();
[GeneratedRegex(@"(?<=(com.cleanroommc:cleanroom:))[0-9\.]+(\+build.[0-9]+)?(-alpha)?", RegexOptions.IgnoreCase | RegexOptions.CultureInvariant)]
private static partial Regex _CleanroomVersion();
/// <summary>
/// 匹配 Forge 主版本号(位于 "forge:X.Y.Z-" 之后)。
/// </summary>
public static readonly Regex ForgeMainVersion = _ForgeMainVersion();
[GeneratedRegex(@"(?<=forge:[0-9\.]+(_pre[0-9]*)?\-)[0-9\.]+", RegexOptions.IgnoreCase | RegexOptions.CultureInvariant)]
private static partial Regex _ForgeMainVersion();
/// <summary>
/// 匹配 Forge Maven 坐标中的版本号(net.minecraftforge:minecraftforge:X.Y.Z)。
/// </summary>
public static readonly Regex ForgeLibVersion = _ForgeLibVersion();
[GeneratedRegex(@"(?<=net\.minecraftforge:(?:forge|fmlloader):[0-9.]+-)[0-9a-zA-Z._+-]+", RegexOptions.IgnoreCase | RegexOptions.CultureInvariant)]
private static partial Regex _ForgeLibVersion();
/// <summary>
/// 匹配 NeoForge 版本号(从 JSON 参数中提取,如 "--fml.neoForgeVersion", "20.6.119-beta")。
/// </summary>
public static readonly Regex NeoForgeVersion = _NeoForgeVersion();
[GeneratedRegex(@"(?<=orgeVersion"",[^""]*?"")[^""]+(?="",)", RegexOptions.IgnoreCase | RegexOptions.CultureInvariant)]
private static partial Regex _NeoForgeVersion();
public static readonly Regex FabricLikeLibVersion = _FabricLikeLibVersion();
[GeneratedRegex(@"(?<=((fabricmc)|(quiltmc)|(legacyfabric)):intermediary:)[^""]*", RegexOptions.IgnoreCase | RegexOptions.CultureInvariant)]
private static partial Regex _FabricLikeLibVersion();
public static readonly Regex LabyModVersion = _LabyModVersion();
[GeneratedRegex(@"(?<=-Dnet.labymod.running-version=)1.[0-9+.]+", RegexOptions.IgnoreCase | RegexOptions.CultureInvariant)]
private static partial Regex _LabyModVersion();
public static readonly Regex MinecraftJsonVersion = _MinecraftJsonVersion();
[GeneratedRegex(@"(([1-9][0-9]w[0-9]{2}[a-g])|((1|[2-9][0-9])\.[0-9]+(\.[0-9]+)?(-(pre|rc|snapshot-?)[1-9]*| Pre-Release( [1-9])?)?))(_unobfuscated)?", RegexOptions.IgnoreCase | RegexOptions.CultureInvariant)]
private static partial Regex _MinecraftJsonVersion();
public static readonly Regex MinecraftDownloadUrlVersion = _MinecraftDownloadUrlVersion();
[GeneratedRegex(@"(?<=launcher.mojang.com/mc/game/)[^/]*", RegexOptions.IgnoreCase | RegexOptions.CultureInvariant)]
private static partial Regex _MinecraftDownloadUrlVersion();
public static readonly Regex CatchLwjglInLib = _CatchLwjglInLib();
[GeneratedRegex(@"(?<=org.lwjgl:)lwjgl(-[a-z._.\-.0-9]*)(?=(:[0-9].[0-9].[0-9](-[a-z.0-9._.\-]*)?:([a-z._.\-.0-9]*)?))", RegexOptions.IgnoreCase | RegexOptions.CultureInvariant)]
private static partial Regex _CatchLwjglInLib();
#endregion
#region Minecraft 下载信息
/// <summary>
/// 匹配 NeoForge 版本列表 JSON 中的版本号
/// </summary>
public static readonly Regex DlNeoForgeVersion = _DlNeoForgeVersion();
[GeneratedRegex(@"(?<="")(1\.20\.1-)?\d+\.[^\.]+\.\d+(\.\d+)?(-(beta|alpha)(\.\d+)?)?(\+snapshot-\d+)?(\+pre-\d+)?(?="")", RegexOptions.IgnoreCase | RegexOptions.CultureInvariant)]
private static partial Regex _DlNeoForgeVersion();
#endregion
#region 外部组件
public static readonly Regex ModIdMatch = _ModIdMatch();
[GeneratedRegex(@"[0-9a-zA-Z_-]+", RegexOptions.IgnoreCase | RegexOptions.CultureInvariant)]
private static partial Regex _ModIdMatch();
#endregion
}