繁体   English   中英

正则表达式会忽略不同行中两个字符之间的字符

[英]Regular Expression ignore characters in between two characters on different lines

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

($ 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之后以新行的形式出现

我使用点匹配换行符在RegexBuddy中为PCRE构建了此正则表达式:

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

然后替换为:

$1$2$3

(?<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;
}
(\([0-1][1-9]/[1-3][0-9]\))(?:Tj[\d\s\.]*Tm)\s*(\(.*\))(?:Tj[\d\s\.]*Tm)\s*(\([-\d\.]*\))

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM