用于提取 3 - 8 位数字和 3 个字母文本(casplock 文本)之间的数据的正则表达式

Regex to extract data between 3 - 8 digit number and 3 letter text(casplock text)

我想使用正则表达式提取 3 - 8 位数字和 3 个字母文本(casplock 文本)之间的数据。任何想法将不胜感激。

数据(字符串)

"06/29/20 B QM 02004946 测试家庭抵押贷款 TRU

03/10/20 B BC 2440720 BK OF 测试 XPN

03/07/20 B QZ 00060298 CPORT RU TRU

输出应为:测试家庭抵押贷款、测试 BK 和 CPORT RU

也许这个

  • Zero-width 正面回顾
  • Zero-width 正面前瞻

更新

var pattern = @"(?<=\d{3,8}\s).*(?=\s[A-Z]{3})";

var input = @"06/29/20 B QM 02004946 MY HELLO WORLD XLS
08/29/20 B QM 0948264 MY UI PATH LMN
08/29/20 B QM 435 MY SAMPLE DATA LMN
06/29/20 B QM 123 MY HELLO WORLD XLS";

var results = Regex
       .Matches(input, pattern, RegexOptions.Multiline)
       .Cast<Match>()
       .Select(x => x.Value);

Console.WriteLine(string.Join(", ", results));

输出

MY HELLO WORLD, MY UI PATH, MY SAMPLE DATA, MY HELLO WORLD

Full Demo Here


原创

模式

(?<=\d{3,8}\s).*(?=\s[A-Z]{3}$)

用法

var pattern = @"(?<=\d{3,8}\s).*(?=\s[A-Z]{3}$)";

var strings = new List<string>()
{
   "06/29/20 B QM 02004946 MY HELLO WORLD XLS",
   "08/29/20 B QM 0948264 MY UI PATH  LMN",
   "08/29/20 B QM 435 MY SAMPLE DATA   LMN"
};

var results = strings.Select(x => Regex.Match(x, pattern).Value);

foreach (var result in results)
   Console.WriteLine(result);

输出

MY HELLO WORLD
MY UI PATH
MY SAMPLE DATA

Full Demo here