.NET Regex-如何查找术语“;被包围的“;具有特殊字符

本文关键字:包围 特殊字符 术语 何查找 Regex- 查找 NET | 更新日期: 2023-09-27 18:25:28

我有以下行:

MIAU,GD & LP
MIAU,GDMB & LP 

我需要找到第一行,匹配规则是:只有当"GFD"answers"LP"存在时。

目前我有以下正则表达式:

new Regex(@"^(?=.*'bGD'b)(?=.*'bLP'b).*$", RegexOptions.Compiled);

它匹配两条线。如何通过忽略前面和后面的字母字符将第二行从匹配中排除?

.NET Regex-如何查找术语“;被包围的“;具有特殊字符

您需要RegexOptions.Multiline修饰符,并在$之前添加'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

请参阅IDEONE演示