Regex 正则表达式捕获组子字符串
试图在记事本+中使用正则表达式。我希望发生以下情况: 名字:乔纳森 替换为: 名字:Jona 我尝试了以下方法: 查找语句 名字:(*) 替换语句: 名字:\1 为了把它放进一个被俘的小组。但是现在我需要捕获的组是Regex 正则表达式捕获组子字符串,regex,replace,find,notepad++,substring,Regex,Replace,Find,Notepad++,Substring,试图在记事本+中使用正则表达式。我希望发生以下情况: 名字:乔纳森 替换为: 名字:Jona 我尝试了以下方法: 查找语句 名字:(*) 替换语句: 名字:\1 为了把它放进一个被俘的小组。但是现在我需要捕获的组是截断/子字符串,所以它只是第一个四个字符。当我进行替换时,它会很好地替换整个字符串,但我不清楚如何只获取捕获组的前四个字符。我尝试了(.*){4},但没有返回任何结果 谢谢大家! 这里有一条路要走: 查找内容:(名字:.{1,4})。*?$ 替换为:$1 我不确定是否有办法只访问匹配
截断/子字符串
,所以它只是第一个四个字符。当我进行替换时,它会很好地替换整个字符串,但我不清楚如何只获取捕获组的前四个字符。我尝试了(.*){4}
,但没有返回任何结果
谢谢大家! 这里有一条路要走:
- 查找内容:
(名字:.{1,4})。*?$
- 替换为:
$1
FirstName: (.{4}).*?$
这可以翻译为“找到字符串‘FirstName:’,然后记住接下来的四个字符,然后一直到行尾。”
您的replace语句将与以前几乎相同(我在FirstName后面加了一个空格):
如果它位于行的开头,并且是面向行的,
或者是唯一的行项目,这将起作用 查找:
(?im)^[^\S\r\n]*(名字:)[^\S\r\n]*([a-z]{0,4}.{0,4})。*
替换:
FirstName$1
如果它在字符串的中间,则需要更多的努力。
必须看到一些这样的例子,因为必须使用伪锚 此模式只会麻烦处理要截断的多余长度的行 我的模式不仅在步数/效率方面优于其他答案,而且在替换字段中也不会涉及任何引用或文本 使用这个:() 查找:
FirstName:.{4}\K.+
替换:[无]
*注意,
\K
表示“从此点开始匹配”。+
将在每行末尾停止。请注意,如果“FirstName:”后面的字符少于4个,则此正则表达式将不匹配,并将被完全忽略,这与捕获(.{1,4})
并重新插入它是一样的。事实上,*?
可以替换为+?
,并且在“FirstName:”后面正好有4个字符的示例也将被忽略。但在大多数情况下(除非案件不敏感和其他怪异),这是相当的。
FirstName: \1