使用正则表达式忽略特定的字符串

时间:2019-02-27 06:04:03

标签: c# regex regex-group regex-greedy

我们得到的输入字符串如下。

String inputstr = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus venenatis ultricies pulvinar. Sed sed faucibus orci, at pharetra ex. Donec lacinia massa sed nunc aliquet ultricies. Duis suscipit, purus et commodo auctor, leo tellus molestie dui, quis porttitor orci nulla eu diam. Cras efficitur mauris dignissim, lobortis purus id, luctus erat. Vestibulum a mollis ante, id viverra libero. Vestibulum gravida enim non dignissim varius. Sed velit sapien, blandit quis imperdiet a, vulputate nec turpis. In hac habitasse platea dictumst.\n*TEST06499YGOV 297296+10*\nMorbi auctor fringilla pulvinar. Donec mattis arcu ac metus scelerisque\n 2090 12/15 Page 1 of 3Sed faucibus tempor ex, euismod consequat diam tincidunt sed. Donec sagittis aliquam dolor vitae faucibus. Ut lobortis magna risus, ut sagittis sem convallis eget. Nulla tellus lectus, aliquet ut lacinia quis, sagittis in odio. Ut egestas, sapien id ultrices aliquet, urna mi rutrum nunc, scelerisque rhoncus nulla sem eget risus. Sed eget mollis ante. Vivamus et malesuada neque, ac finibus lectus. Vestibulum consequat purus sit amet elit dapibus gravida. Phasellus in lorem vestibulum, sagittis lacus nec, hendrerit velit. Praesent sapien eros, pharetra eu magna quis, aliquam vestibulum mi. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Donec at aliquet felis, vitae semper ante. Pellentesque aliquam, nisl vitae ullamcorper posuere, lorem neque placerat elit, non hendrerit eros lectus nec quam. Praesent sollicitudin tempor tortor. Ut tellus massa, viverra sed iaculis nec, egestas gravida felis. Nam fringilla placerat volutpat.\n*TEST06499YGOV 297296+10*\nMorbi auctor fringilla pulvinar. Donec mattis arcu ac metus scelerisque\n 2090 12/15 Page 2 of 3Duis ullamcorper, nunc id aliquet luctus, arcu justo tristique nisl, a viverra libero odio sed massa. Duis nec nibh eu risus feugiat dignissim sit amet eu orci. Aliquam malesuada tristique augue non venenatis. Sed in viverra mauris. Suspendisse eu leo non augue molestie tempus. Donec ultrices facilisis turpis, vel fringilla mauris semper ut. Aliquam ullamcorper ante vitae porttitor ultricies. Nullam et consectetur justo. Vestibulum non ullamcorper ex"

在上述输入字符串上应用正则表达式后的预期输出:

  1. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus venenatis ultricies pulvinar. Sed sed faucibus orci, at pharetra ex. Donec lacinia massa sed nunc aliquet ultricies. Duis suscipit, purus et commodo auctor, leo tellus molestie dui, quis porttitor orci nulla eu diam. Cras efficitur mauris dignissim, lobortis purus id, luctus erat. Vestibulum a mollis ante, id viverra libero. Vestibulum gravida enim non dignissim varius. Sed velit sapien, blandit quis imperdiet a, vulputate nec turpis. In hac habitasse platea dictumst.\n
  2. Sed faucibus tempor ex, euismod consequat diam tincidunt sed. Donec sagittis aliquam dolor vitae faucibus. Ut lobortis magna risus, ut sagittis sem convallis eget. Nulla tellus lectus, aliquet ut lacinia quis, sagittis in odio. Ut egestas, sapien id ultrices aliquet, urna mi rutrum nunc, scelerisque rhoncus nulla sem eget risus. Sed eget mollis ante. Vivamus et malesuada neque, ac finibus lectus. Vestibulum consequat purus sit amet elit dapibus gravida. Phasellus in lorem vestibulum, sagittis lacus nec, hendrerit velit. Praesent sapien eros, pharetra eu magna quis, aliquam vestibulum mi. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Donec at aliquet felis, vitae semper ante. Pellentesque aliquam, nisl vitae ullamcorper posuere, lorem neque placerat elit, non hendrerit eros lectus nec quam. Praesent sollicitudin tempor tortor. Ut tellus massa, viverra sed iaculis nec, egestas gravida felis. Nam fringilla placerat volutpat.\n
  3. Duis ullamcorper, nunc id aliquet luctus, arcu justo tristique nisl, a viverra libero odio sed massa. Duis nec nibh eu risus feugiat dignissim sit amet eu orci. Aliquam malesuada tristique augue non venenatis. Sed in viverra mauris. Suspendisse eu leo non augue molestie tempus. Donec ultrices facilisis turpis, vel fringilla mauris semper ut. Aliquam ullamcorper ante vitae porttitor ultricies. Nullam et consectetur justo. Vestibulum non ullamcorper ex

我们已使用下面的正则表达式来获得高于输出的结果。

Regex = new Regex(@"^(?:(.+?\n)\*.+Page \d+ of \d+)+(.+)$", RegexOptions.Singleline);

但是使用此正则表达式,我们得到的输出1和3而不是2,我们希望基本上忽略下面的特定字符串。

我们要从输入字符串中忽略下面的字符串。

\n*TEST06499YGOV 297296+10*\nMorbi auctor fringilla pulvinar. Donec mattis arcu ac metus scelerisque\n 2090 12/15 Page 1 of 3

\n*TEST06499YGOV 297296+10*\nMorbi auctor fringilla pulvinar. Donec mattis arcu ac metus scelerisque\n 2090 12/15 Page 2 of 3

输入字符串的匹配规则

1。忽略从*到d页之间的文本。

eg. \n*TEST06499YGOV 297296+10*\nMorbi auctor fringilla pulvinar. Donec mattis arcu ac metus scelerisque\n 2090 12/15 Page 2 of 3

所以请帮助我们解决这个问题。

1 个答案:

答案 0 :(得分:0)

如果要将字符串整体保留,还可以从字符串中删除匹配项,并使用2个换行符代替。

匹配

\n\*Test.*? Page \d+ of \d+

.NET regex demo,但内容缩短了。

替换为:

\n\n

例如:

String inputstr = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus venenatis ultricies pulvinar. Sed sed faucibus orci, at pharetra ex. Donec lacinia massa sed nunc aliquet ultricies. Duis suscipit, purus et commodo auctor, leo tellus molestie dui, quis porttitor orci nulla eu diam. Cras efficitur mauris dignissim, lobortis purus id, luctus erat. Vestibulum a mollis ante, id viverra libero. Vestibulum gravida enim non dignissim varius. Sed velit sapien, blandit quis imperdiet a, vulputate nec turpis. In hac habitasse platea dictumst.\n*TEST06499YGOV 297296+10*\nMorbi auctor fringilla pulvinar. Donec mattis arcu ac metus scelerisque\n 2090 12/15 Page 1 of 3Sed faucibus tempor ex, euismod consequat diam tincidunt sed. Donec sagittis aliquam dolor vitae faucibus. Ut lobortis magna risus, ut sagittis sem convallis eget. Nulla tellus lectus, aliquet ut lacinia quis, sagittis in odio. Ut egestas, sapien id ultrices aliquet, urna mi rutrum nunc, scelerisque rhoncus nulla sem eget risus. Sed eget mollis ante. Vivamus et malesuada neque, ac finibus lectus. Vestibulum consequat purus sit amet elit dapibus gravida. Phasellus in lorem vestibulum, sagittis lacus nec, hendrerit velit. Praesent sapien eros, pharetra eu magna quis, aliquam vestibulum mi. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Donec at aliquet felis, vitae semper ante. Pellentesque aliquam, nisl vitae ullamcorper posuere, lorem neque placerat elit, non hendrerit eros lectus nec quam. Praesent sollicitudin tempor tortor. Ut tellus massa, viverra sed iaculis nec, egestas gravida felis. Nam fringilla placerat volutpat.\n*TEST06499YGOV 297296+10*\nMorbi auctor fringilla pulvinar. Donec mattis arcu ac metus scelerisque\n 2090 12/15 Page 2 of 3Duis ullamcorper, nunc id aliquet luctus, arcu justo tristique nisl, a viverra libero odio sed massa. Duis nec nibh eu risus feugiat dignissim sit amet eu orci. Aliquam malesuada tristique augue non venenatis. Sed in viverra mauris. Suspendisse eu leo non augue molestie tempus. Donec ultrices facilisis turpis, vel fringilla mauris semper ut. Aliquam ullamcorper ante vitae porttitor ultricies. Nullam et consectetur justo. Vestibulum non ullamcorper ex";
String pattern = @"\n\*Test.*? Page \d+ of \d+";
Regex regex = new Regex(pattern, RegexOptions.Singleline | RegexOptions.IgnoreCase);

String result = regex.Replace(inputstr, "\n\n");
Console.WriteLine(result);

查看C# demo