Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.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
Javascript 具有已知开始和结束索引的两个字符位置之间的正则表达式_Javascript_Regex_Sed - Fatal编程技术网

Javascript 具有已知开始和结束索引的两个字符位置之间的正则表达式

Javascript 具有已知开始和结束索引的两个字符位置之间的正则表达式,javascript,regex,sed,Javascript,Regex,Sed,一般来说,在regex中,是否有方法在两行位置之间选择数据?读了几天regex,我甚至不确定正确的术语(字符/行位置、索引、列?),但我的意思是 选择两个索引之间的数据,即^.{4}和^.{7}之间的数据,例如: TESTINGREGEX ISNTTHEBEST! 或 我期待的结果是: TESTREGEX ISNTBEST! 及 我想知道,如果可能的话,我可以学习如何实现它?我非常熟悉使用其他工具实现这一点的其他方法,但我很好奇如何使用regex实现这一点 我曾尝试与非捕获组合作,想知道我是

一般来说,在
regex
中,是否有方法在两行位置之间选择数据?读了几天
regex
,我甚至不确定正确的术语(字符/行位置、索引、列?),但我的意思是

选择两个索引之间的数据,即
^.{4}
^.{7}
之间的数据,例如:

TESTINGREGEX
ISNTTHEBEST!

我期待的结果是:

TESTREGEX
ISNTBEST!

我想知道,如果可能的话,我可以学习如何实现它?我非常熟悉使用其他工具实现这一点的其他方法,但我很好奇如何使用
regex
实现这一点

我曾尝试与非捕获组合作,想知道我是否受到限制,因为我正试图在
atom
编辑器的查找和替换
regex
功能中应用此正则表达式(成为:),所以我希望得到一些建议,以拓宽我的知识面并尝试一下。我猜
javascript
,和/或
sed
style
regex
答案是可以接受的……真的,任何东西都会有帮助

编辑:
{3}(?=.{5}$)
来自works for me,以及我在OP中给出的示例文本。知道什么时候可以从
$
行末开始计数是件好事。但我意识到我其实需要相反的东西。。。我需要从行的开头数出来。这是不可能的,;re:关于不支持lookbehind的评论?

regex
^(.{4})。{3}(.{5})$
(用JavaScript方言表示,但其中使用的功能非常常见)将为您提供两个捕获组,您可以组合以获得所描述的输出:

功能测试(str){
var match=str.match(/^(.{4})。{3}(.{5})$/;
log(str,'=>',匹配[1]+匹配[2]);
}
测试(“测试正则表达式”);

测试(“不是最好的!”仅使用正则表达式是可能的,但不使用javascript。正则表达式
(?如果目的是获取两个字符偏移量之间的文本,那么正则表达式就太过分了。只需使用
切片

函数排除(str,i,j){
返回str.slice(0,i)+str.slice(j);
}
日志(排除(“TESTINGREGEX”,4,7));

console.log(exclude(“isnthebest!”,4,7));
但这是不灵活的,如果字符串长度不是12个字符,则会抛出错误(
“TEST”
将抛出错误,因为没有匹配项,因此
匹配[2]
将访问未定义项的第二项)!@ibrahimmahrir:请看末尾关于长字符串的注释。当然,短字符串在这个问题上没有意义。
{3}(?=.{5}$)
对我有效!我实际上已经尝试过了
(?@trytryreach是的,这是因为尽管look behinds是regex语法的正式组成部分,但出于性能原因,javascript不支持它们(我猜想)。@swaver2112这是否意味着与
{3}(?=.{12}$)相反
行不通?我意识到,从
$
行尾开始,计数可能会发生变化,我需要从行尾的左侧开始计数,并从设置的起始点开始从第n个字符开始进行匹配。只需说明javascript没有“lookback”,无论是正的还是负的。只有lookaheads(pos或neg)@MarcGuiselin我更新了OP,意识到我给出的示例有一个统一的线端位置,而我的实际用例不是这样。想知道是否可以实现相反的结果?
TESTREGEX
ISNTBEST!
TESTREGEXCANBEFUN
ISNTBEST!ANDFARFROMFUN