问题描述
我想使用正则表达式提取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