我有以下字符串:
73746174652C313A312C310D
|
- extract the value at this position
我想使用正则表达式提取值1(字符串末尾的1)。
所以基本上是一个充当charAt(索引)的正则表达式。
我需要此解决方案用于仅支持正则表达式的第三方应用程序。请注意,应用程序无法访问捕获组,也不支持负面的外观。
答案 0 :(得分:2)
你可以尝试:
(?<=^.{21}).
它无法在Javascript中运行,但也许它可以在您的应用中运行。
这意味着:字符(?<= ... )
的开头加上21个字符^
之后的单个字符.{21}
之前。所以,最后,它返回第22个字符。
答案 1 :(得分:2)
在C#中:
(?<=^.{21})(.)
JS中的:
/.(?=.{2}$)/
答案 2 :(得分:1)
第22个角色位于捕获组1中。
/^.{21}(.)/
但是你在哪个系统需要这个而不是正常的字符串处理?
答案 3 :(得分:0)
取决于您想要如何匹配它(距离开头的x距离或距离结束的x距离)
/(.).{2}$/
从结尾开始第三次(捕获第1组)
/^.{21}(.)/
第22个字符(捕获第1组)
//PHP
$str = '73746174652C313A312C310D';
$char = preg_replace('/(.).{2}$/','$1',$str); //3rd from last
preg_match('/(.).{2}$/',$str,$chars); //3rd from last
$char = $chars[1];
preg_match('/^.{21}(.)/',$str,$chars); //22nd character
$char = $chars[1];
//JS
var str = '73746174652C313A312C310D';
var ch = str.replace(/(.).{2}$/,'$1'); //3rd from last
var ch = str.match(/(.).{2}$/)[1]; //3rd from last
var ch = str.match(/^.{21}(.)/)[1]; //22nd character
如果您必须使用工具First match:
位的结果,请运行两次:
73746174652C313A312C310D
- ^.{21}.
= 73746174652C313A312C31
73746174652C313A312C31
- .$
= 1