c# – 正则表达式:匹配可选单词
需要匹配句子的第一部分,直到给定的单词.但是,该单词是可选的,在这种情况下,我想匹配整个句子.例如:
在第一种情况下,我想要“我有一句话”.在第二种情况下,我想“我有一句话,我喜欢它.” Lookarounds将给我第一个案例,但是一旦我尝试使其成为可选项,为了涵盖第二个案例,我得到了整个第一句话.我试过让表达懒惰……没有骰子. 适用于第一种情况的代码: var regEx = new Regex(@".*(?=with)"); string matchstr = @"I have a sentence with a clause I don't want"; if (regEx.IsMatch(matchstr)) { Console.WriteLine(regEx.Match(matchstr).Captures[0].Value); Console.WriteLine("Matched!"); } else { Console.WriteLine("Not Matched : ("); } 我希望的表达方式: var regEx = new Regex(@".*(?=with)?"); 有什么建议? 提前致谢! 解决方法
有几种方法可以做到这一点.你可以这样做:
^(.*?)(with|$) 第一组不情愿地匹配,即尽可能少的字符.如果该组后面跟着或者结束$anchor,我们总体匹配. 鉴于此输入: I have a sentence with a clause I don't want. I have a sentence and I like it. 然后有两场比赛(as seen on rubular.com): >第1场比赛: >第1组:“我有一句话” >第2场比赛: >第1组:“我有一句话,我喜欢它”. 如果您不需要区分这两种情况,可以使用(?:with | $)进行分组交替非捕获. 相关问题 > Difference between (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |