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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用正则表达式忽略特定字符串相关的知识,希望对你有一定的参考价值。

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

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.
*TEST06499YGOV 297296+10*
Morbi auctor fringilla pulvinar. Donec mattis arcu ac metus scelerisque
 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.
*TEST06499YGOV 297296+10*
Morbi auctor fringilla pulvinar. Donec mattis arcu ac metus scelerisque
 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.
  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.
  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(@"^(?:(.+?
)*.+Page d+ of d+)+(.+)$", RegexOptions.Singleline);

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

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


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


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

匹配输入字符串的规则

1.从*到d的页面d开始的文本。

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

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

答案

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

比赛


*Test.*? Page d+ of d+

.NET regex demo内容缩短。

用。。。来代替:




例如:

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.
*TEST06499YGOV 297296+10*
Morbi auctor fringilla pulvinar. Donec mattis arcu ac metus scelerisque
 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.
*TEST06499YGOV 297296+10*
Morbi auctor fringilla pulvinar. Donec mattis arcu ac metus scelerisque
 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 = @"
*Test.*? Page d+ of d+";
Regex regex = new Regex(pattern, RegexOptions.Singleline | RegexOptions.IgnoreCase);

String result = regex.Replace(inputstr, "

");
Console.WriteLine(result);

看到C# demo

以上是关于使用正则表达式忽略特定字符串的主要内容,如果未能解决你的问题,请参考以下文章

搜索正则表达式时忽略子节点

正则表达式 - 匹配任何单词但忽略特定单词[重复]

c ++:搜索忽略重音字符

正则表达式匹配特定的 URL 片段而不是所有其他 URL 可能性

除非被特定标签包围,否则替换字符

使用 RegEx 忽略分隔符前的特定字符