需要匹配句子的第一部分,直到给定的单词.但是,该单词是可选的,在这种情况下,我想匹配整个句子.例如:
我有一句话,附有我不想要的条款.
我有一句话,我喜欢它.
在第一种情况下,我想要"I have a sentence".在第二种情况下,我想要"I have a sentence and I like it."
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 : (");
}
Run Code Online (Sandbox Code Playgroud)
我希望的表达方式:
var regEx = new Regex(@".*(?=with)?");
Run Code Online (Sandbox Code Playgroud)
有什么建议?
提前致谢!
詹姆士
pol*_*nts 11
有几种方法可以做到这一点.你可以这样做:
^(.*?)(with|$)
Run Code Online (Sandbox Code Playgroud)
第一组不情愿地匹配,即尽可能少的字符.如果该组后面跟着或者with是线$ 锚的末尾,我们有一个整体匹配.
鉴于此输入:
I have a sentence with a clause I don't want.
I have a sentence and I like it.
Run Code Online (Sandbox Code Playgroud)
然后有两个匹配(如rubular.com上所示):
"I have a sentence ""with""I have a sentence and I like it".""空字符串)(?:with|$)如果您不需要区分这两种情况,则可以使用非捕获进行分组交替.
| 归档时间: |
|
| 查看次数: |
10351 次 |
| 最近记录: |