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

问题描述 投票:3回答:1

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

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的页面d开始的文本。

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

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

c# regex regex-group regex-greedy
1个回答
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

© www.soinside.com 2019 - 2024. All rights reserved.