【问题标题】:Find and Replace with Space Inserted查找并替换插入空格
【发布时间】:2015-11-11 01:08:54
【问题描述】:

我在一个文本文件中有这样的字符串:

10.Divide using the divider at 12C. and pressure at 3.0.
11.Form into cylinders and put on boards, don't handle too much.

这个正则表达式(\d+\.)[A-Z] 正确找到了一个数值,后跟一个句点,再跟一个大写字母。

我想在句点和大写字母之间插入一个空格。我该怎么做?

【问题讨论】:

    标签: regex notepad++


    【解决方案1】:

    其实你的正则表达式是错误的:

    (\d+.)[A-Z] 匹配 1 次或多次出现的数字,后跟任意字符。正则表达式中的. 表示任何字符。更正确的应该是\d+\.[A-Z](也省略了该组,因为它不是匹配所必需的。注意.被转义了)。

    为了插入空格,除了另一个答案提供的解决方案使用2组:即查找(\d+\.)([A-Z])(注意点固定)并替换为\1 \2,您还可以考虑使用环视功能:

    查找(?<=\d\.)(?=[A-Z]) 并替换为(一个空格)。此正则表达式查找前面有一个数字,然后是一个点,然后是一个大写字母的点。然后我们用空格替换那个位置。 (注意,lookahead 和lookbehind 组不包含在“匹配”结果中)

    【讨论】:

      【解决方案2】:

      你大部分时间都在那里。当您将正则表达式子表达式包装在括号中时,您可以在查找和替换操作的“替换”字段中引用它。所以...

      Find what: (\d+.)([A-Z])
      Replace with: \1 \2
      

      (查看类似的问题,如this one。)

      【讨论】:

      • 点是模式中的一个特殊字符,意思是“任何字符”。如果要匹配文字点,则必须对其进行转义:\.
      • 这成功了: Find: (\d+\.)([A-Z]) Replace \1 \2 我之前没有将 [A-Z] 括在括号中,这就是我遇到问题的原因.
      猜你喜欢
      • 2014-09-05
      • 1970-01-01
      • 2014-04-17
      • 2019-02-27
      • 2023-04-05
      • 1970-01-01
      • 2015-09-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多