【问题标题】:Regex and replace selected results only正则表达式并仅替换选定的结果
【发布时间】:2016-06-03 09:44:15
【问题描述】:

我想知道是否有任何工具可以对大量文本(xml 或标记或 html)进行正则表达式搜索,并仅替换显示中选择的案例(应该有“选择/取消选择/全选”选项,而应用替换正则表达式)。

如下例:

我的内容是:

"Visited xtreme.com, stupid.net, childish.com, happy.net and innocence.edu. There are some cross.network isssues that are to be fixed."

现在在这个内容中,我想用“.com”替换所有“.net”出现,因此像 notepad++ 这样的简单工具可以轻松替换它。但我希望该工具显示搜索结果并提供仅替换前两次出现的“.net”而不是“cross.network”中的实例的选项

这只是示例目的,不建议使用替代正则表达式。我不需要它。

【问题讨论】:

  • 您可以使用单词边界\.net\b 使用正则表达式仅选择/替换末尾没有单词字符的那些。不知道 np++ 中是否有任何前两个,但您只需点击“查找下一个”,如果应该替换该匹配项,则单击“替换”。
  • 以上示例仅供理解之用。我不需要替代正则表达式。 NP++ 适合“查找下一个”选项,但对于出现超过 1000 次的海量数据来说还不够。
  • 你可以试试 AstroGrep 和 DocFetcher 之类的工具

标签: regex text editing corpus


【解决方案1】:

NP++ 或者 sublime 都可以,只要能把所有的文字读到内存就行。它们都支持用于查找和替换文本的正则表达式。

如果文本文件太大,即NP++崩溃,那么你可以使用sed。它是一个命令行工具,可以像这样替换文本:

sed -i filename.txt 's/pattern/replacement/g'

在 windows 盒子上,你需要 mingwcygwin 来运行它。

【讨论】:

    【解决方案2】:

    使用sublime 之类的文本编辑器并将单词边界应用于正则表达式:

    \.net\b
    

    这将在stupid.net 中找到.net,但在cross.network 中找不到。
    a demo on regex101.com

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-26
      • 2017-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多