【问题标题】:Regex to search for a word in a string in Visual Studio正则表达式在 Visual Studio 中搜索字符串中的单词
【发布时间】:2010-11-17 10:23:17
【问题描述】:

我需要在我的所有代码库中搜索“Url”并将其替换为“URL”。如果我在 Visual Studio 中搜索 Url,我也会得到所有带有“Url”的变量。

任何人都有一个正则表达式,我可以使用它来仅在带引号的字符串中查找 Url,例如“使用这个网址:”?

编辑

我一直在寻找一种快速而肮脏的方法来查找字符串中包含 Url 的设计器文本和硬编码字符串并将它们更改为 URL。

【问题讨论】:

  • VS中没有“Find Whole Word”选项吗?
  • 我知道这对您的情况不一定有帮助,但这是字符串资源不仅仅用于本地化的众多原因之一。
  • 匹配大小写并查找整个单词还会找到:枚举值 (Url,) Propreties (私有字符串 Url;) 属性使用 (myClass.Url)

标签: visual-studio regex string search


【解决方案1】:

"Use this (Url):",然后您可以替换 $1(或 Visual Studio 使用的任何语法)。您可能需要转义引号,我不确定 Visual Studio 是否允许您为正则表达式的部分加上括号。

【讨论】:

    【解决方案2】:

    Visual Studio 有一个“带引号的字符串”运算符:q。如果您在“使用:正则表达式”和“大小写匹配”的情况下搜索:qUrl,它应该只在字符串中找到“Url”的所有实例。

    更新:以上不正确。 :q 只搜索带引号的字符串,但您不能在其中放入任何内容。我的测试只是显示了看起来正确但巧合正确的案例。我认为相反,您想要的是:

    ^(:q*.*)*(("[^"]*Url[^"]*")|('[^']*Url[^']*'))(:q*.*)*$
    

    【讨论】:

    • Ooohhh +1 为 :q。我不知道。
    • 除非我做错了什么,否则它甚至找不到我的示例“使用此网址:”,即使在我的单个 200 行文档上运行也需要相当多的时间四核。
    【解决方案3】:

    我真正需要的是:

    ("[^"]*Url[^"]*")
    

    感谢tghw 的提示,他指出 Visual Studio 中的 :q 快捷方式等同于:

    (("[^"]*")|('[^']*'))
    

    我意识到我需要使用第一部分来仅查找我正在寻找的双引号字符串。

    这个正则表达式和带有“匹配大小写”和“匹配整个单词”的标准查找都产生了一些我希望找不到但消除了其中带有“Url”的代码的结果。

    【讨论】:

    • 这误导了我,所以我将输入我认为正确的版本:"[^"\n]*Url[^"\n]*" - 否则它将返回单词“Url”出现在任何行上的结果在两个字符串之间,并且由于查找结果仅显示第一行,因此看起来您得到了误报。
    【解决方案4】:

    如果您只是想快速搜索带引号的字符串,可以使用 Visual Studio 中的“使用通配符”查找选项。

    例如:

    "*Url*"
    

    【讨论】:

      【解决方案5】:

      我使用以下内容仅搜索“整个单词”(我的意思是:在 " 之后或之后或之前出现空格):

      (("[^"]*[ ]|")Url([ ][^"]*"|"))
      

      例如,这匹配“test Url”和“Url test”,但不匹配“testUrl”。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多