Regex 记事本中正则表达式的插入语法++;或Perl

Regex 记事本中正则表达式的插入语法++;或Perl,regex,insert,insertion,Regex,Insert,Insertion,缩写:搜索: “{[0-9][0-9],”插入空格+00…替换字符串段: {空间[0~9] [0-9],

缩写:搜索: “{[0-9][0-9],”插入空格+00…替换字符串段: <强> {空间[0~9] [0-9],<<强>或其他发现了[09] [0~9]序列的加粗数据……那么我如何用正则表达式搜索并插入中间?? 长格式问题:

我正在尝试在一系列混合模型CSV分析数据(五个文件,每个文件具有不同的模型参数,每个文件数百行)中进行一系列简单的字符插入(实际上是数字)

我在视觉上遇到了挑战,希望插入填充字符来排列数据,这样我就可以专注于调整键值,而不是将数据文件放置到数据文件中。 当CSV数据行格式为:

*变量_symbolic-name*,{###,##,*…(“CSV数值数据列表集”…]),n*

实际数据行:

61,参数17,{,70,6,1,-1,3,00,0,0,0,}

要变形为:

61,参数17

给定或获取制表符以对齐所有{数字字段开头

我发现搜索:“{[0-9][0-9]”,“失败,但”{[0-9][0-9]”,“成功地执行了搜索和替换操作的查找部分,但在如何进行如此短的实际替换(插入)方面遇到了众所周知的难题。(显然,有这么多参数和文件,我会谨慎行事!)

但是,如何保留找到的范围并在前面插入填充(空格、零、零,如果为正,则具体为零,如果为负,则为-00)。简言之,我需要知道如何在记事本++…的替换字段中插入2-3个位置,并在不影响原始数据的情况下保留原始数据

这里的文章引用了替换段落和行、添加换行符等,但这种简单的插入更改对你们来说似乎太简单了。但这对我来说是几个小时的挫折

谢谢!//弗兰克

决议:
好消息:({,)([0-9][0-9],)\1 xx\2工作正常,({,)([0-9][0-9],)并替换为\1 xx@\2…无论是否使用选项卡。显然,关键是([0-9][0-9],)其中包括逗号的区分……虽然我不知道为什么一小时前在Sobrinho的帮助下进行的试验似乎失败了。一定没有尝试过这个序列。谢谢大家!

这里需要一个背景参考,这意味着在替换部分,与您匹配的内容相等

通常,整个匹配部分存储在
$0
反向引用中。(您也可以使用捕获组获得
$1
,使用两个捕获组最多可获得
$2
,以此类推)

回到您的问题,您可以尝试以下方法:

查找:

替换为:

\t\t$1 00$2
这将在匹配的部分前面插入两个制表符(
{,[0-9][0-9],
(或者换句话说,替换两个制表符匹配的部分和匹配的部分),然后放入第一个捕获的部分(
{,
),然后是空格和双0,然后是第二个捕获的部分,两个数字和后面的逗号


尝试在搜索框中键入以下内容:

(.+)(\{,[0-9][0-9].*)
在替换中:

\1\t\t\2
当括号之间有东西时,它们由Notepad++“存储”,可以在替换框中重复使用


括号的顺序以1开头,访问方式为\1、\2、…

您将其标记为Perl,下面介绍如何在Perl中执行此操作

我更喜欢使用先行断言而不是反向引用

s/(?= {,[0-9][0-9], ) /\t\t/x
或者,
$&
包含匹配的字符串(
$0
有所不同)


您的解决方案太贪婪,无法在,{但是,(.+)(\{,([0-9][0-9].*)和\1\t\t\2 00\3之间进行隔离,在短的第一位数字上效果很好,但在四位数字的列数据上效果不佳……让我播放更多内容。谢谢让我偏离中心。很好,我很高兴您理解了“保存”和“使用”的含义工作,现在你可能会自己解决!:)事实上,这一希望失败了。你能建议如何区别在三位数和四位数之前添加填充。如果我在“,(4924,”,上做这个搜索,坏事情会发生……很可能是第二个:“,{490024,或“,{004924,”(.+)(\{,)+([0-9][0-9])仍在拾取3位和4位的行,并且需要对一位逗号进行类似的更改。看起来,位置计数并不是正则表达式解析的一个明显优势。好的,然后尝试此操作,搜索:^(+.+)(\{[0-9][0-9].*))$Replace by:\1\t\t\2^匹配行的开头,而$Replace匹配行的结尾现在我真的很困惑。行的开头和数字数据的开头似乎没有什么区别。所以\1结尾的字段是,{,在所有情况下。搜索失败的是两个数字的位置计数,然后是逗号。第二个字段([0-9][0-9],)不只是拾取###############和#####。也许如果我在{上添加一个带全局SAR的虚拟对象,以填充一个无意义的分隔符,例如,{,@在数字之前?感谢你的帮助。我不理解$操作符。我的眼睛读不懂…句号,所以这真的很好。我已经20年没有编程了,所以这是一个艰难的过程。在Perl中,
{,[0-9][0-9],
匹配
{,25,
没有必要逃避
{
。在这种情况下,它不是元字符。所以,我想知道你为什么说它“失败”。它失败是因为它没有区分{、25和{,2534,…正如您在另一个线程中看到的,问题是位置区分,并用插入的子字符串按长度替换找到的子字符串
s/(?= {,[0-9][0-9], ) /\t\t/x
s/ {,[0-9][0-9],  /\t\t$&/x