可以记事本++正则表达式找到一个字符串并替换为包含找到的字符串的新字符串

时间:2014-08-22 19:47:28

标签: regex notepad++

我有以下文字:

.clk,
.rst_b,
.phase_in

我想要以下内容:

.clk(clk),
.rst_b(rst_b),
.phase_in(phase_in)

那是 -

  1. 找到以句点开头的字符串,并排除可能存在或不存在的尾随逗号。
  2. 将字符串(不包括句点)添加到括号内的找到字符串中。
  3. Notepad ++具有“查找和替换”功能而不是“查找和追加”功能,因此第二步可以写成如下 - 用自身的副本替换字符串,然后用括号括起来的副本。

    第一步由\.\w+完成。有关第2步的任何想法吗?

    谢谢!

5 个答案:

答案 0 :(得分:2)

是的,你可以!使用捕获组来引用替换中匹配的单词。

\.(\w+)替换为.\1\(\1\)

括号表示我们希望保留对\w+的引用。我们在替换中使用\1访问该引用。

答案 1 :(得分:2)

您可以使用以下正则表达式。这会捕获点后面的单词字符。

Find: ^\.(\w+)
Replace: .\1\(\1\)

<强>解释

^          # the beginning of the string
\.         # '.'
(          # group and capture to \1:
  \w+      #   word characters (a-z, A-Z, 0-9, _) (1 or more times)
)          # end of \1

在替换中,我们使用\1来引用捕获组#1匹配和捕获的内容。 注意:您需要在替换中转义括号以实际显示它们。

答案 2 :(得分:1)

使用\1查找\.(\w+)并替换为\.\1\(\1\)

答案 3 :(得分:0)

找到:\.([^,]+)

替换:.$1\($1\)

Online demo

确保选中正则表达式单选按钮,并取消选中与新行匹配的点。

模式说明:

  \.                       '.'
  (                        group and capture to \1:
    [^,]+                    any character except: ',' (1 or more times)
  )                        end of \1

答案 4 :(得分:0)

您可以使用这样的简单正则表达式:

enter image description here