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

标签 javascript regex sed

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

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

TESTINGREGEX
ISNTTHEBEST!

TESTINGREGEXCANBEFUN
ISNTTHEBEST!ANDFARFROMFUN

我正在寻找的结果是:

TESTREGEX
ISNTBEST!

TESTREGEXCANBEFUN
ISNTBEST!ANDFARFROMFUN

我想知道,如果可能的话,我可以了解如何实现它?我非常熟悉使用其他工具执行此操作的其他方法,但我很好奇如何使用 regex 实现此目的。

我试过使用非捕获组,想知道我是否受到限制,因为我试图在 atom 编辑器中应用此正则表达式查找并替换 regex 功能(成为 Avoiding Common Pitfalls 的受害者),所以我希望得到一些建议来扩大我的知识并尝试一下。我猜 javascript 和/或 sed 风格的 regex 答案是可以接受的...真的任何东西都会有帮助!

编辑: .{3}​​(?=.{5}$) 来自 Mark's answer适用于我以及我在 OP 中提供的示例文本。知道何时能够从 $ 行尾开始计数是一件好事。但我意识到我实际上需要相反的东西......我需要从 ^ 行的开头算起。这不可能吗?回复:关于不支持回顾的评论?

最佳答案

仅使用正则表达式是可能的,只是在 javascript 中不行。正则表达式 (?<=^.{4}).+(?=.{5}$)努力捕捉第 4 个字母和倒数第 5 个字母之间的组。由于 javascript 不支持正向后视,因此除了简单的 .replace(regex, "") 之外,您还必须使用一些 javascript。删除这些字符。

在 javascript 中下一个最接近的正则表达式可能是 .{3}(?=.{5}$) ,它将匹配倒数第 5 个字母之前的 3 个字符。

如果您想在 javascript 中使用纯正则表达式来捕获字符串开头后几个字符的内容,那是不可能的。

关于javascript - 具有已知开始和结束索引的两个字符位置之间的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42120727/

相关文章:

javascript - AngularJS - 重新加载 ng 风格的背景图像

javascript - WordPress 文件的正则表达式

regex - 替换包含分数和下划线的字符串模式,捕获问题

bash - sed 错误提示 "extra characters after command"

javascript - $location 更改不适用于 ngchange 而是 ngclick

javascript - 通过 AngularJS 中的 Controller 将结果从一个工厂/服务 ajax 方法传递到另一个方法

javascript - 如何纠正倒计时器发生的延迟?

php - 如何转义 REGEXP 子句中的括号

javascript - 在字符串中查找单词的字符,优化

linux - grep、awk 和 sed 有什么区别?