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