Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 如果长度超过x,返回一些中间部分?_Regex - Fatal编程技术网

Regex 如果长度超过x,返回一些中间部分?

Regex 如果长度超过x,返回一些中间部分?,regex,Regex,我目前使用的正则表达式类似于so(.{12}$)|(^.{1,12}$)——类似于“如果值的长度为1到12,则返回它们,否则返回最后12个。” 我想添加另一个子句,如果长度大于16,我需要返回它的子集(具体来说,从第5个字符开始,返回12) 如何在同一个正则表达式中执行此操作?它似乎与 (?<=^.{4}).{12}|^.{1,12}$ (?它似乎与 (?<=^.{4}).{12}|^.{1,12}$ (?您试图从结尾或其他地方获取最多12个字符?不是单个(.{1,12}$)够了

我目前使用的正则表达式类似于so
(.{12}$)|(^.{1,12}$)
——类似于“如果值的长度为1到12,则返回它们,否则返回最后12个。”

我想添加另一个子句,如果长度大于16,我需要返回它的子集(具体来说,从第5个字符开始,返回12)

如何在同一个正则表达式中执行此操作?

它似乎与

(?<=^.{4}).{12}|^.{1,12}$
(?它似乎与

(?<=^.{4}).{12}|^.{1,12}$

(?您试图从结尾或其他地方获取最多12个字符?不是单个(.{1,12}$)够了吗?
如果长度为1到12位,返回它们。否则,返回最后12位。
当前已实现。我想编辑它,使其成为
,如果长度为1到12位,返回它们。如果长度大于16位,返回从第5位开始的12位。否则,返回最后12位。
您尝试最多12个字符是从结尾还是其他什么?单曲(.{1,12}$)够了吗?
如果长度是1到12位,返回它们。否则,返回最后12位。
当前已实现。我想编辑它,使其成为
如果长度是1到12位,返回它们。如果长度大于16位,返回从第5位开始的12位。否则,返回最后12位。
我在其中添加了一个子句,但它没有非常好。我正在使用
(?Hrm,有一些麻烦。如果我输入
1234567890012345678901234589012345678901234567890
,它匹配两次-最后12次和12次中。你知道如果它更早地找到匹配,我如何使它不匹配最后12次吗?这取决于你如何匹配。或者总是使用第一次匹配(如果要查找所有匹配项)或使用仅返回第一个匹配项的函数(例如Java中的
Matcher.find
,或.NET中的
Regex.match
)(?Mh,那里使用的是哪个正则表达式引擎?大多数都无法处理可变长度的查找。JavaScript属于这一类,这就是该站点无法工作的原因。但是如果是.NET,它应该可以工作。我在其中添加了一个子句,但它工作得非常完美。我使用的是
(?Hrm,还有一些问题。如果我给它输入
12345678900123456789012345678901234567890
,它匹配两次-最后12次和中间12次。你知道如果它更早地找到匹配,我如何使它不匹配最后12次吗?这取决于你如何匹配。或者总是使用第一次匹配(如果你找到所有匹配)或者使用只返回第一个匹配项的函数(例如Java中的
Matcher.find
,或.NET中的
Regex.match
)(?Mh,那里使用的是哪个正则表达式引擎?大多数都无法处理可变长度的lookbehind。JavaScript属于这一类,这就是该站点无法工作的原因。但是如果是.NET,它应该可以工作。