【问题标题】:replace all ocurances in text that are not followed by a number替换文本中所有不跟数字的匹配项
【发布时间】:2014-10-15 12:25:13
【问题描述】:

我有一个文本框,用户基本上可以在其中写任何东西。需要在 txt 文件中搜索和替换此文本。但只有那些不跟数字的出现才会被替换。因此,例如,如果文本框包含“hello2”,则 txt 文件中的每个“hello2”都需要替换为“customtext1”,但如果它在 txt 文件中找到“hello23”,则不应该替换它。打开文件,进行搜索和替换等都不是问题。问题是检查下一个字符是否是数字。如果 hello2 是一行或文件的最后一个单词,也可能是一个问题,因此它后面没有字符。我怎样才能以简单的方式做到这一点?

谢谢

编辑:

被替换的单词必须有空格或符号,例如 .,!?/-_ 或者是一行的开头。

【问题讨论】:

  • 如果文件中的内容是hello2 hello hello2 hello21 hello20 2hello2,您的预期输出是什么
  • 输出将是customtext1 hello customtext1 hello21 hello20 2hello2 实际上现在你展示了这个(没有想到它)它必须在前面有一个空格或者是一行的开头。将立即更新问题
  • 我认为这可以使用正则表达式来完成,但这不是我的强项。通过将 RegEx 添加为标签以突出显示正则表达式专家之间的问题可能会有所帮助。
  • 添加了正则表达式标签!谢谢...

标签: regex vb.net file text replace


【解决方案1】:
[\n .,!?/-_]hello2[\n .,!?/-_]

我认为这个正则表达式应该适用于您所描述的内容,如果有一些示例文本来测试它会很好

【讨论】:

  • 谢谢!将对其进行测试并报告!如果行尾没有任何内容,这也可以吗?如果例如 hello2 是 txt 文件的最后一个单词?
  • 这里出了点问题。我现在有这个:content = Regex.Replace(content, "[\n .,!?/_]" & DataGridView1.Rows(j).Cells(0).Value.ToString & "[\n .,!?/-_]", "customtext" & j) 问题是这也会删除 hello2 单词前后的字符...
  • 当您访问捕获组 [0] 或 [1] 时,您需要将要替换的部分放入括号中,以便它位于像这样的捕获组中(取决于您在哪里这样做)它只会访问 hello2 单词 [\n .,!?/-](hello2)[\n .,!?/-],
  • 不确定我是否理解...如何在正则表达式替换上下文中访问它?我的意思是,[0] 应该在哪里??
  • 正如我所说,这取决于您在哪里执行此操作,并且语法只需写入 google“您的程序语言”正则表达式捕获组
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-29
  • 2013-04-16
  • 1970-01-01
  • 2020-06-23
  • 2018-08-29
相关资源
最近更新 更多