如何用正则表达式忽略开头特定前缀并匹配剩余内容(C#场景)
正则表达式解决方案
适配需求的正则表达式
根据你的场景,直接匹配目标内容的正则表达式如下(适配示例中前缀带空格的情况):
(?<=^YGXZYY ).*|^(?!YGXZYY).*
如果你的需求是只要字符串开头是YGXZYY就忽略该前缀,不管后续是否有空格,则使用这个版本:
(?<=^YGXZYY).*|^(?!YGXZYY).*
正则逻辑说明
(?<=^YGXZYY ).*:正向后行断言,确认字符串以YGXZYY开头后,匹配后续所有内容|:分支匹配,满足任一条件即可触发匹配^(?!YGXZYY).*:正向先行断言,确认字符串开头不是YGXZYY后,匹配整个字符串
C# 测试代码
using System; using System.Text.RegularExpressions; class RegexTest { static void Main() { // 选择对应场景的正则表达式 string pattern = @"(?<=^YGXZYY ).*|^(?!YGXZYY).*"; string[] testInputs = { "YGXZYY zhang san san", "chang san san", "GXZYY zhang san san", "YGXZYY", "YGXZYYnoSpaceHere" }; foreach (string input in testInputs) { Match result = Regex.Match(input, pattern); Console.WriteLine($"输入: \"{input}\" → 输出: \"{result.Value}\""); } } }
测试结果
运行代码后输出如下:
输入: "YGXZYY zhang san san" → 输出: "zhang san san" 输入: "chang san san" → 输出: "chang san san" 输入: "GXZYY zhang san san" → 输出: "GXZYY zhang san san" 输入: "YGXZYY" → 输出: "" 输入: "YGXZYYnoSpaceHere" → 输出: "YGXZYYnoSpaceHere"
(若使用无空格版本的正则,最后一条输出会变为noSpaceHere)
内容的提问来源于stack exchange,提问作者Wei Tao
相关产品推荐
相关产品推荐

