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

この正規表現は、ドットマッチング改行を使用してPCRE用のRegexBuddyで作成しました。

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

次に、交換は次のとおりです。

$1$2$3
于 2013-01-16T20:11:42.680 に答える
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 に答える
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 に答える