我从该字符串中提取pdf字符串,我需要获取一个跟踪号列表。
我提取的字符串就像这样“更多文本”是提取字符串的其余部分。
更多文字...... _货运:0.00__SALES税:0.00 __602256510000; 602256510002; 602256500001;跟踪...更多文字
我通过匹配“跟踪”找到字符串中的跟踪号码。 这是我的正则表达式:
((?<TrackingNumber>[a-zA-Z0-9]+);\s)+TRACKING
问题在于:
执行后,Group TrackingNumber“仅包含最后一个跟踪号码,但如上所述需要该组”TrackingNumber“有3个匹配,每个跟踪号码一个(没有尾随的”;“或空格)
答案 0 :(得分:1)
答案 1 :(得分:1)
在Dot-Net中完成的方式是使用 Capture Collections
编辑: - 请注意,您可能希望将跟踪字符设为可选的
[a-zA-Z0-9]*
如果中间有一个丢失/空白的号码
这将继续捕获
(例如:602256510000; 602256510002;; 602256500001; TRACKING
)
# (?:(?<TrackingNumber>[a-zA-Z0-9]+);\s)+TRACKING
(?:
(?<TrackingNumber> [a-zA-Z0-9]+ ) #_(1)
; \s
)+
TRACKING
C#:
string pdf = "__602256510000; 602256510002; 602256500001; TRACKING ";
Regex RxTrack = new Regex(@"(?:(?<TrackingNumber>[a-zA-Z0-9]+);\s)+TRACKING");
Match trackMatch = RxTrack.Match( pdf );
if ( trackMatch.Success )
{
CaptureCollection cc = trackMatch.Groups["TrackingNumber"].Captures;
for (int i = 0; i < cc.Count; i++)
Console.WriteLine("[{0}] = {1}", i, cc[i].Value);
}
输出:
[0] = 602256510000
[1] = 602256510002
[2] = 602256500001
答案 2 :(得分:0)
这个正则表达式可以接受它
(?<TrackingNumber>[\d]+)(?=;)
答案 3 :(得分:0)