我试图使用以下正则表达式来搜索和替换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" 不工作
我已经更新了我的版本的记事本++和一切
答案 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"
使用以下设置:
更新在lookbehind中,\A
(文本开头)锚似乎有一些奇怪的行为。从外观上移除似乎有效。试试这个模式:
\A([^\n]*)state="1"
并替换为:
$1state="5"
所有其他设置应该没问题。