尝试在Notepad++
中使用正则表达式。我希望发生以下情况:
名字:乔纳森
取代:
名字:Jona
我尝试过以下方法:
查找声明
姓:
(*)。
替换声明:
姓:\ 1
为了将其放入捕获的组中。但现在我需要抓取的群组为truncated/substring
,因此它只是第一个四个字符。当我进行替换时,它会完全替换完整的字符串,但我不清楚如何只获取捕获组的前四个字符。我试过了(.*){4}
,但没有回复。
谢谢!
答案 0 :(得分:2)
我不确定是否有办法只访问匹配组的一部分,但您只能匹配您想要的部分。
您的新查找语句仅捕获前4个字符,但仍与其余字符匹配:
FirstName: (.{4}).*?$
这转换为“找到字符串'FirstName:',然后记住接下来的四个字符,然后一直持续到行尾。”
你的替换语句几乎和以前一样(我在FirstName后面加了一个空格):
FirstName: \1
答案 1 :(得分:1)
这是一种方法:
(FirstName:.{1,4}).*?$
$1
答案 2 :(得分:0)
如果它位于行和行的开头,则为 或唯一的项目,这将工作。
查找:(?im)^[^\S\r\n]*(firstname:)[^\S\r\n]*([a-z]{0,4}|.{0,4}).*
替换:FirstName $1
如果它在字符串的中间,则需要更多的努力 必须看到一些例子,因为必须使用伪锚。
答案 3 :(得分:0)
此模式只会打扰超长的处理行进行截断。
我的模式不仅在步数/效率方面优于其他答案,而且也不会对替换字段中的任何引用或文本感到烦恼。
使用此:(Pattern Demo)
查找:FirstName: .{4}\K.+
替换: [nothing]
*注意,\K
表示“从这一点开始匹配”。 .+
将在每一行的末尾停止。