在第一个#之后用#Word替换Word

时间:2018-10-12 01:19:34

标签: regex notepad++

有人会为Notepad ++的正则表达式提供帮助,以将Word替换为#Word(仅在第一次出现#之后)吗?

#Celebrity #Glad #Known #Lord Byron #British #Poet

应成为

#Celebrity #Glad #Known #Lord #Byron #British #Poet
                              ^

2 个答案:

答案 0 :(得分:1)

仅在第一次出现#后用#Word替换Word,您可以使用alternation

查找内容

(?>^[^#]*#\w+\h*|#\w+\h*|\G)\K(\w+\h*)

替换为

#\1

Regex demo

说明

  • (?>原子组
    • ^[^#]*#\w+\h*使用否定的字符类从字符串的开头开始匹配,而不是# 0次以上,然后匹配#。然后匹配1+次单词字符,然后匹配0+次水平空白字符。
    • |
    • #\w+\h*匹配#,单词字符1次以上,然后水平空白字符0次以上
    • |
    • \G在上一场比赛结束时声明位置
  • )关闭原子团
  • \K忘记先前的匹配内容
  • (\w+\h*)捕获一组1+个单词字符,然后捕获0+次水平空白字符

答案 1 :(得分:0)

您可以使用以下正则表达式进行匹配和替换:

\s([^#]\w+)

首先匹配空白,然后创建一个不以'#'开头但包含一个或多个Word字符的组。

然后替换为:

' #$1'

这会将'#'添加到不是以此开头的单词中。