REGEX在设置长度后查找第一个实例

REGEX在设置长度后查找第一个实例,regex,Regex,我可能会因为问这个问题而被嘲笑,但是在我自己搜索并试图弄明白这个正则表达式之后,我已经厌倦了浪费时间去弄明白。这是我试图解决的问题。我经常使用editpad pro来转换字符串,以便将它们放入大型机 例如,我想将excel中的一列单词转换为sql的IN子句。这个栏目大约有5000字 我可以轻松地将其复制粘贴到文本编辑器中,然后使用“查找并替换”将其从一列单词转换为一行,并使用“,”分隔每个单词 完成后,我想使用正则表达式在逗号之前或之后分割这一行,在70个字符之前或之后 (?P<start

我可能会因为问这个问题而被嘲笑,但是在我自己搜索并试图弄明白这个正则表达式之后,我已经厌倦了浪费时间去弄明白。这是我试图解决的问题。我经常使用editpad pro来转换字符串,以便将它们放入大型机

例如,我想将excel中的一列单词转换为sql的IN子句。这个栏目大约有5000字

我可以轻松地将其复制粘贴到文本编辑器中,然后使用“查找并替换”将其从一列单词转换为一行,并使用“,”分隔每个单词

完成后,我想使用正则表达式在逗号之前或之后分割这一行,在70个字符之前或之后

(?P<start>^.{0,70}) 

我认为你应该考虑限制你的初始连接,但是这里有一个你具体实现的解决方案:

^.{0,70}[^,]*
这将选择前70个字符(如果可用),然后选择下一个逗号之前的每个字符

我认为这里不需要组,但显然可以将它们添加到正则表达式中:

(?P<start>^.{0,70})(?P<next>[^,]*)
(?P^.{0,70})(?P[^,]*)

你有原始文本的样本吗?很好吗?(?P^.{0,70})(P?[^,]*)在我的文本中找不到任何内容我将你提供的内容转换为(?P^.{0,70}[^,]*)这正确地找到了第一个逗号。但是当我尝试使用${start}(回车)添加Replace子句时,我遇到了一个意想不到的问题。因为这会找到第一个字符串,并进行替换,但现在第一行和第二行都与搜索子句匹配,重新运行find和replace会开始复制文本。我几乎从未使用过命名组,所以难怪我在编写它们时出错。如果你已经让他们运行,请回复,这样我可以修正我的答案。也就是说,我认为您在这里不需要它们:我只需搜索
^.{0,70}[^,]*,
并替换为
\0\n
,在匹配的70多个字符后添加换行符对于重复的匹配,只需运行regex搜索/替换一次,您就可以了?我的意思是,搜索位置应该设置在之前替换的文本的末尾,下一个匹配不应该在前一行工作。我根本不知道你的编辑器,所以它可能是一个要设置的参数。为了在editpad pro中进行查找和替换,你必须使用命名组,例如,我使用以下命令:(?P.+)(?P[0-9]+)(?P.+)(?P.+)从excel电子表格中复制4列信息
^.{0,70}[^,]*
(?P<start>^.{0,70})(?P<next>[^,]*)