微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

正则表达式提取3到8位数字和3个字母的文本大写字母之间的数据

如何解决正则表达式提取3到8位数字和3个字母的文本大写字母之间的数据

我想使用正则表达式提取3到8位数字和3个字母的文本(大写字母)之间的数据。任何想法都会非常感谢。

数据(是字符串)

“ 06/29/20 B QM 02004946测试房抵押TRU

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

03/07/20 B QZ 00060298 CPORT RU TRU”

输出应为:测试房屋抵押贷款,BK of Test和CPORT RU

解决方法

也许是

  • 零宽度正向后看
  • 零宽正前瞻

更新

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。