【问题标题】:How to find and replace with regex in excel如何在excel中查找和替换正则表达式
【发布时间】:2016-04-21 13:09:09
【问题描述】:

我有一个 1 列多行的 excel 文件。

行包含各种文本,这是一个示例:

texts are home
texts are whatever
dafds
dgretwer
werweerqwr
texts are 21412
texts are 346345
texts are rwefdg
terfesfasd
rwerw

我想用特定单词替换“文本是 *”,其中 * 是“文本是”之后的任何内容,例如“文本被替换”。如何在 Excel 中做到这一点?

【问题讨论】:

  • 我已经阅读了那篇文章,并尝试了一些示例,还制作了自己的正则表达式,但没有任何结果。我做错了吗?
  • 您使用的是什么版本的 Excel?我有 2016 年,我只是按照“您要替换的项目的通配符”部分中的步骤,使用上面的示例,并且能够找到“文本是 *”并将所有实例替换为“文本被替换”并且它有效正如预期的那样,除非我误解了
  • 请参考这个问题的答案! stackoverflow.com/questions/22542834/…
  • @AdamAxtmann 该文章适用于 Word,不适用于 Excel 2016。

标签: regex excel replace


【解决方案1】:

显然,Excel 不使用 Regex,但有一种解决方法。您可以使用 *, ?或 ~ 在您的搜索模式中。

寻找

? (question mark) =  Any single character. For example, sm?th finds "smith" and "smyth"  

* (asterisk) = Any number of characters For example, *east finds "Northeast" and "Southeast"  

~ (tilde) followed by ?, *, or ~ = A question mark, asterisk, or tilde. For example, fy06~? finds "fy06?"

您可以使用这些组合来获得接近正则表达式的类似模式。

【讨论】:

    【解决方案2】:

    现在是2021年,可以用Excel的替换

    • 关键点:
      • 查找:texts are *
      • 替换:texts are replaced
    • 步骤
      • 选择要替换的内容,(右上角)选择替换
      • 在替换弹出窗口中,输入FindReplace 的规则
      • 点击Replace All,完成^_^

    【讨论】:

    • 在你的答案中混用两种不同的语言对读者不利。
    • 感谢中文截图:)
    【解决方案3】:

    使用 Google 表格代替 Excel - 此功能是内置的,因此您可以直接在查找和替换对话框中使用正则表达式。

    回答您的问题:

    1. 从 Excel 中复制数据并粘贴到 Google 表格中
    2. 使用正则表达式查找和替换对话框
    3. 从 Google 表格中复制数据并粘贴回 Excel 中

    【讨论】:

    • 或者,您可以使用 LibreOffice,它也支持正则表达式。
    • 问题清楚地表明“我如何在 Excel 中做到这一点?”。
    • 对我的用例来说太慢了。对于大小为 15,000 行 9 列的数据,页面冻结了一分钟或更长时间
    【解决方案4】:

    如果你想要一个公式来做到这一点:

    =IF(ISNUMBER(SEARCH("*texts are *",A1)),LEFT(A1,FIND("texts are ",A1) + 9) & "WORD",A1)
    

    这样就可以了。将 `"WORD" 更改为您想要的单词。

    【讨论】:

    • 这个答案缺少教育解释。请edit这个答案解释这个表达式是如何工作的。我确信这个答案对于经常使用 excel 的人来说是“不言自明的”,但对于非狂热用户来说,这堆命令可能难以理解。
    【解决方案5】:

    作为 Regex 的替代方法,运行:

    Sub Replacer()
       Dim N As Long, i As Long
       N = Cells(Rows.Count, "A").End(xlUp).Row
    
       For i = 1 To N
          If Left(Cells(i, "A").Value, 9) = "texts are" Then
             Cells(i, "A").Value = "texts are replaced"
          End If
       Next i
    End Sub
    

    将产生:

    【讨论】:

      猜你喜欢
      • 2017-09-22
      • 1970-01-01
      • 1970-01-01
      • 2015-03-25
      • 2011-06-16
      • 1970-01-01
      • 2017-01-28
      • 2015-01-11
      • 2012-12-02
      相关资源
      最近更新 更多