【问题标题】:Searching for particular word in files在文件中搜索特定单词
【发布时间】:2010-10-07 03:39:19
【问题描述】:

我们要求在所有文件中将单词 'ABC'(dummied) 替换为 'XYZ'(dummied)。我们有数百个可能包含该词的 aspx/ascx/cs/xml/xsl 文件。

要求是

  1. 如果 word 是 NameSpace 的一部分(例如 ABC.A1.A2 不应被替换)或变量名(var abc = "")或标签 (abc:control),请不要替换它。
  2. 只有当它是一个完整的单词时才应该替换该单词(在我的 cs 文件中,如果我的变量名称与我要查找的单词相同,则不应替换它。如果我有一个字符串文字,例如 var str = "ABC 是好产品". 这种情况下应该换掉

这将是 1 次活动。如何解析给定单词的整个文件并在满足条件时替换它?计划使用正则表达式。

非常感谢任何其他想法。是否已经存在执行此操作的工具?我已经尝试谷歌但找不到这样的工具。

【问题讨论】:

  • 你对单词的定义是什么?你需要考虑标点符号吗? “单词”可以包含标点符号吗?例如:students'
  • 还剩下什么?如何区分“孔字”和“变量名”?
  • @Yogendra:但是标点符号对正则表达式引擎很重要,所以您需要回答 Mark Byers 的问题。还有 Henk Holterman 的。
  • @Tim,是的,“无关紧要”通常是问题开始的方式。
  • 那么,您是在ABC's 中搜索ABC 并将其替换为XYZ,还是将ABC's 明确替换为XYZ's?如果您要替换的单词是won,您可能不想替换won't 的前三个字母,但是如何避免呢?正则表达式不知道单词;对他们来说,这只是一堆乱七八糟的人物。如果您想找到正确的问题要问,这就是需要思考的方式。

标签: c# regex file


【解决方案1】:

PowerGREP 之类的工具总是很有帮助。与RegexBuddy 一起,您将拥有一个强大的工具集,可帮助您学习正则表达式并掌握每一个正则表达式挑战。

【讨论】:

    【解决方案2】:

    如果这真的是一次性活动,我会投票支持简单地使用 Visual Studio 搜索/替换,即使它是一堆解决方案。为什么要重新发明轮子,尤其是因为实际上,您第一次做错的可能性要大得多,并且不得不手动撤消数百个更改?

    如果您使用源代码管理(您确实使用源代码管理,对吗?),我会强烈建议您在签入文件之前对文件进行比较,无论您使用什么解决方案。

    【讨论】:

    • 好点 Wonko。我不能使用 VS 搜索替换功能,因为 aspx 文件不是解决方案的一部分。但可能是可行的事情
    • 您仍然可以在 VS 中打开 aspx 文件(只需将它们放在打开的 IDE 上),并在所有打开的文档中搜索/替换。
    【解决方案3】:

    调查是否可以将需求转换为正则表达式。一次可能是一种文件类型。
    然后,不要编写程序,而是使用现有工具 (SED)。

    但是您的某些规则似乎非常复杂。

    【讨论】:

      猜你喜欢
      • 2022-12-06
      • 2021-03-17
      • 2021-04-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多