c# - 我如何使用正则表达式返回一个字符串以从要匹配的字符串中排除一部分

标签 c# regex string string-matching regex-negation

我正在尝试将字符串列表与正则表达式匹配,如下所示 -

regex.IsMatch(displayName)

但是我检查的第二步需要确保如果 displayName 中的括号内包含任何文本,它不应返回匹配项。

例如。

如果 regex 正在寻找包含“Muds”的字符串

所以如果我的第一个字符串是

“My name is Muds”——它应该返回一个匹配项(真)。

“我的名字是( Muds contained )”——它应该返回NO匹配(假)。

“我的名字是( { Muds } )”——它应该返回NO 匹配(错误)。

所以本质上,上面的字符串被缩减为"My name is",括号内的内容被排除在外。 所以 IsMatch 语句然后减少为 -

regex.IsMatch("My name is")

我制作了一个正则表达式来查找括号内的内容

Regex excludingRegex = "\s?(?:\(.+\)|\[.+\]|<.+>|{.+})\s?"

让上面的调用作为排除正则表达式

所以我想做类似的事情

regex.IsMatch(ExcludingRegex.Replace(displayName,""))

简而言之,我想排除括号内的内容以与第一个正则表达式匹配

我看过很多关于Negative Lookahead 和从正则表达式中排除上下文的示例,但我无法正确处理我的情况。

任何指针都会很棒。

最佳答案

您好,这是我在控制台应用程序中创建的代码。我在这里使用函数 regex.split 使用正则表达式拆分字符串(reg exp 检查 {} 中的字符串在哪里)并检查数组中的偶数项我可以检查是否找到字符串 mud 并显示它在哪里被找到。赔率中的项目是在被检查的字符串中的 {} 内找到的项目。

您可以下载代码here

     static void Main(string[] args)
        {
 string input = "My name is ( { Muds } ) My name is MUDS ( { Juan } ) My name is ( { Ortiz Mud } ) otra cosa por aca {juan} pero pues aqui mud {yani}";
            string pattern = @"\{(.*?)\}"; 

            string[] substrings = Regex.Split(input, pattern);

            for(int i= 0; i <= substrings.Length; i ++)
            {
                if(i % 2 == 0)
                {
                    if (substrings[i].ToLower().Contains("mud"))
                    {
                        Console.Write(string.Format("This string has mud outside of brackets. Found in string: {0}", substrings[i].ToString()));
                        Console.Write("\n");
                    }
                }
            }



            Console.Read();

        }

关于c# - 我如何使用正则表达式返回一个字符串以从要匹配的字符串中排除一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48427463/

相关文章:

c# - 连接到 https url 以将请求发送到 Web 服务时避免超时异常

c# - Node.SelectNodes(/*) 和 Node.childNodes 有什么区别?

java - 正则表达式匹配文件扩展名

C++:使用运算符比较字符串的词典顺序

string - 在 Gradle 中将驼峰式字符串转换为破折号分隔的字符串(即 Groovy)

c# - AOP 与元编程

c# - 如何将选定的datagridview行添加到数据表

python - 如何在Python中的正则表达式中匹配任一或组?

java - 正则表达式插入符号和符号有效,但不知道为什么

c - C 中的 strcmp() 有问题