如何解决正则表达式提取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
原始
模式
(?<=\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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。