C# .NET正则表达式-如何查找术语;“被包围”;有特色
我有以下几行:C# .NET正则表达式-如何查找术语;“被包围”;有特色,c#,regex,C#,Regex,我有以下几行: MIAU,GD & LP MIAU,GDMB & LP 我需要找到匹配规则的第一行:仅当“GFD”和“LP”存在时 目前我有以下正则表达式: new Regex(@"^(?=.*\bGD\b)(?=.*\bLP\b).*$", RegexOptions.Compiled); 这两条线都匹配。 如何通过忽略前面和后面的字母字符从匹配中排除第二行?您需要RegexOptions。多行修饰符并在$之前添加\r?,因为多行模式下的$与回车符不匹配: var text
MIAU,GD & LP
MIAU,GDMB & LP
我需要找到匹配规则的第一行:仅当“GFD”和“LP”存在时
目前我有以下正则表达式:
new Regex(@"^(?=.*\bGD\b)(?=.*\bLP\b).*$", RegexOptions.Compiled);
这两条线都匹配。
如何通过忽略前面和后面的字母字符从匹配中排除第二行?您需要
RegexOptions。多行
修饰符并在$
之前添加\r?
,因为多行模式下的$
与回车符不匹配:
var text = "A #GFD/ LP\r\nA \"GFDSC LP ";
var pattern = @"^(?=.*\bGFD\b)(?=.*\bLP\b).*\r?$";
var result = Regex.Matches(text, pattern, RegexOptions.Multiline)
.Cast<Match>()
.Select(p => p.Value)
.ToList();
foreach (var s in result)
Console.WriteLine(s); // => A #GFD/ LP
var text=“A#GFD/LP\r\nA\”GFDSC-LP”;
变量模式=@“^(?=.*\bGFD\b)(?=.*\bLP\b)。*\r?$”;
var result=Regex.Matches(文本、模式、RegexOptions.Multiline)
.Cast()
.选择(p=>p.Value)
.ToList();
foreach(结果中的var s)
Console.WriteLine;//=>A#GFD/LP
请参见我看不到您的正则表达式与任何一行都不匹配。在这里,。如果您使用的是
RegexOptions.Multiline
,它将匹配它应该匹配的内容(您可以在\r?
之前添加$
,因为多行模式下的$
与回车符不匹配)。您是否使用逐字字符串文字(“…regex…”
)?请出示代码。@MattBurland我已经更新了问题,谢谢你指出out@stribizhev是的,我使用逐字记录,我已经更新了您需要的问题RegexOptions.Multiline
。