我希望在“字符串”之后替换
stringreplacefield 角色扮演
用于生成
stringstringeplacefield
第一次更换后
stringstringstringplacefield
第二次替换后
stringstringstringstringlacefield
第三次替换后
stringstringstringstringstringacefield
使用不匹配的组
在记事本++中
我已经试了几天
请帮帮我
答案 0 :(得分:0)
(((?:string)+)(?!string).([^\n\r]*?)(field))\Z
替换为: $1\n$2string$3$4
从Notepad ++中,请注意您应该使用notpad ++ 6.1或更高版本,因为旧版本中的正则表达式存在问题,现在已经解决了。
按 ctrl h 进入查找和替换 模式
选择正则表达式选项
在“查找内容”字段中输入(((?:string)+)(?!string).([^\n\r]*?)(field))\Z
输入$1\n$2string$3$4
点击全部替换。每次单击全部替换时,将会吃掉一个新字符,并插入一个新行。
正则表达式演示
https://regex101.com/r/jK6jF7/1
示例文字
stringreplacefield
替换后
1st time
stringreplacefield
stringstringeplacefield
2nd time
stringreplacefield
stringstringeplacefield
stringstringstringplacefield
3rd time
stringreplacefield
stringstringeplacefield
stringstringstringplacefield
stringstringstringstringlacefield
4th time
stringreplacefield
stringstringeplacefield
stringstringstringplacefield
stringstringstringstringlacefield
stringstringstringstringstringacefield
5th time
stringreplacefield
stringstringeplacefield
stringstringstringplacefield
stringstringstringstringlacefield
stringstringstringstringstringacefield
stringstringstringstringstringstringcefield
6th time
stringreplacefield
stringstringeplacefield
stringstringstringplacefield
stringstringstringstringlacefield
stringstringstringstringstringacefield
stringstringstringstringstringstringcefield
stringstringstringstringstringstringstringefield
7th time
stringreplacefield
stringstringeplacefield
stringstringstringplacefield
stringstringstringstringlacefield
stringstringstringstringstringacefield
stringstringstringstringstringstringcefield
stringstringstringstringstringstringstringefield
stringstringstringstringstringstringstringstringfield
8th time since there are no more characters between "string" and field, then no more replacements are made
stringreplacefield
stringstringeplacefield
stringstringstringplacefield
stringstringstringstringlacefield
stringstringstringstringstringacefield
stringstringstringstringstringstringcefield
stringstringstringstringstringstringstringefield
stringstringstringstringstringstringstringstringfield
NODE EXPLANATION
----------------------------------------------------------------------
( group and capture to \1:
----------------------------------------------------------------------
( group and capture to \2:
----------------------------------------------------------------------
(?: group, but do not capture (1 or more
times (matching the most amount
possible)):
----------------------------------------------------------------------
string 'string'
----------------------------------------------------------------------
)+ end of grouping
----------------------------------------------------------------------
) end of \2
----------------------------------------------------------------------
(?! look ahead to see if there is not:
----------------------------------------------------------------------
string 'string'
----------------------------------------------------------------------
) end of look-ahead
----------------------------------------------------------------------
. any character except \n
----------------------------------------------------------------------
( group and capture to \3:
----------------------------------------------------------------------
[^\n\r]*? any character except: '\n' (newline),
'\r' (carriage return) (0 or more
times (matching the least amount
possible))
----------------------------------------------------------------------
) end of \3
----------------------------------------------------------------------
( group and capture to \4:
----------------------------------------------------------------------
field 'field'
----------------------------------------------------------------------
) end of \4
----------------------------------------------------------------------
) end of \1
----------------------------------------------------------------------
\Z before an optional \n, and the end of the
string
----------------------------------------------------------------------