0

嗨,我正在尝试获取一些值,跳过该行的其余值,然后获取下一行,但前提是它是某种模式。所以我的数据就像

($ Amount)Tj 1 0 0 1 18.4 369.8 Tm
 (12/30)Tj 1 0 0 1 84.7 369.8 Tm
 (CLUBZONE.COM TICKETS USA VANCOUVER BC)Tj 1 0 0 1 449.5 369.8 Tm
 (-165.00)Tj 1 0 0 1 18.4 356.8 Tm
 (01/05)Tj 1 0 0 1 84.7 356.8 Tm

我想抓住(12/30)(CLUBZONE.COM TICKETS USA VANCOUVER BC)(-165.00)

我应该匹配日期,然后是换行符之前的所有内容,下一行的下一步?我现在想省略括号之外的东西我只有这个

[\(][0-1][1-9]/[1-3][0-9][\)] 

*请注意,数据在每个之后都以新行的形式出现Tm

4

3 回答 3

1

(?<value>\(.*\))符合你的例子。下面是对应的代码C#

private IList<string> GetValues(string input)
{
    const string pattern = @"(?<value>\(.*\))";
    var regex = new Regex(pattern);
    var values = new List<string>();

    foreach (Match match in regex.Matches(input))
    {
        values.Add(match.Groups["value"].Value.ToString());
    }

    return values;
}
于 2013-01-16T20:21:56.190 回答
1

我在 RegexBuddy 中为 PCRE 构建了这个正则表达式,带有点匹配换行符:

^.*?(\(\d{1,2}/\d{1,2}\)).*?(\(.*?\)).*?(\(-?\d+\.\d{2}\)).*$

那么替换是:

$1$2$3
于 2013-01-16T20:11:42.680 回答
0
(\([0-1][1-9]/[1-3][0-9]\))(?:Tj[\d\s\.]*Tm)\s*(\(.*\))(?:Tj[\d\s\.]*Tm)\s*(\([-\d\.]*\))

快速而肮脏,仅在 Visual REGEXP 中测试,但这应该得到你想要的,在匹配 1 到 3 中。

于 2013-01-16T20:15:27.813 回答