在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/