notepad ++ regex替换第一行中的单词

时间:2014-03-19 17:57:10

标签: regex replace notepad++

我试图使用以下正则表达式来搜索和替换notepad ++中的多个文件

([^\n]*)(state="1")([^\n]*)*.

搜索并查找state =" 1"在每个文件的第一行,工作正常。

然而,当我尝试更换state =" 1"使用:

Replace with: $1 state="5"

它切断了其余部分。

我认为可以使用以下方式获得剩下的部分:

Replace with: $1 state="5" $2

但是,$ 2似乎不存在作为变量。

有没有办法将线的其余部分附加到变量$ 2?

干杯

下面是一张图片来展示如何     (= \ A [^ \ n]的*?)状态=" 1" 不工作

我已经更新了我的版本的记事本++和一切 notworking

1 个答案:

答案 0 :(得分:3)

每个捕获组(…)都会分配一个号码,因此$2代表第二个捕获组(state="1")。该行的其余部分在$3中捕获。

删除state="1"周围的捕获组:

([^\n]*)state="1"([^\n]*)*.

或使用$3

Replace with: $1 state="5" $3

另外,考虑到任务的简单性,我不明白为什么你不能只搜索state="1"并替换为state="5"。这里似乎不需要正则表达式。


更新到目前为止,所列出的模式中没有任何内容将结果限制为第一行的匹配字符串。如果您需要,我建议使用这样的模式:

(?=\A[^\n]*)state="1"

使用以下设置:

screenshot


更新在lookbehind中,\A(文本开头)锚似乎有一些奇怪的行为。从外观上移除似乎有效。试试这个模式:

\A([^\n]*)state="1"

并替换为:

$1state="5"

所有其他设置应该没问题。

相关问题