【问题标题】:Regex to find multiple occurrences of the same character with excluding words in line正则表达式查找相同字符的多次出现并排除行中的单词
【发布时间】:2018-11-08 12:11:20
【问题描述】:

我正在使用 Visual Studio 2017 搜索(使用 .NET Framework 正则表达式)尝试构建复杂的正则表达式,但我没有设法将它们组合在一起。

正则表达式将在每一行搜索字符 = 的多次出现。目标应该在两个 = 之间。 但我想排除多个单词,如(AND、OR、SELECT 等)

我现在的查询如下所示:

^(=.*){2}.$

期望的结果:

匹配 () A (= B =) C

匹配 () A AND A (= B =) C)

X 避免 A = D AND B = C

X 避免 A == B

【问题讨论】:

  • 试试=(?:(?!\b(?:AND|OR|SELECT)\b)[^=])+=
  • 我也不确定如何测试我的特定正则表达式引擎。
  • 输入是我庞大的代码库,我正在尝试使用 Visual Studio 的正则表达式搜索来查找所有错误。
  • VS S&R 正则表达式与常见的 .NET 正则表达式略有不同。在替换方面,S&R 功能也有一些问题。

标签: regex visual-studio visual-studio-2017


【解决方案1】:

你可以使用

=(?:(?!\b(?:AND|OR|SELECT)\b)[^=])+=

请注意,在 VS 搜索和替换工具中,[^=],一个否定字符类,不匹配换行符。如果要确保它不匹配换行符,请在里面添加 \r\n[^=\r\n]

详情

  • = - = 符号
  • (?:(?!\b(?:AND|OR|SELECT)\b)[^=])+ - 除= ([^=]) 之外的任何字符,1 次或多次重复 (+),不启动非捕获组内的任何子字符串 (ANDOR 或 @ 987654336@) 作为整个单词(因为\b 匹配单词边界)
  • = - = 符号

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-18
    • 1970-01-01
    • 2012-05-11
    • 2016-11-24
    • 2011-01-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多