3

我读了一些关于正则表达式的教程,我看到了一句话:

(?<=exp):匹配前缀 exp 之后的任何位置

例如,我有一些字符串:

分享

关心

如果我想查找所有字符串包括 "are",但 "are" 必须跟在 "Sh": 之后/(?<=Sh)are/i。现在只匹配“Share”,匹配索引为2(匹配“are”,而不是“Share”中的“Share”)。

但是 Javascript 没有这个正则表达式。我怎么能在Javascript中这样做?

谢谢!

4

4 回答 4

3

你不能这样做。Javascript 的正则表达式实现中没有后向断言。

备择方案

  • 在某些情况下,您可以改为使用分组来捕获您实际想要匹配的内容:/Sh(are)/i

  • 如果你真的需要lookbehinds,你可以使用第三方正则表达式库。

有关的

于 2012-10-04T12:27:41.847 回答
2

唯一的方法(当然,这仅在您的正则表达式中没有前瞻断言时才有效)是反转字符串并使用前瞻而不是后瞻:

/era(?=hS)/i
于 2012-10-04T12:39:52.210 回答
0

您可以使用非捕获组

/(?:sh)(are)/

这告诉正则表达式在are不捕获sh组的情况下进行查找。但是在这种情况下,由于您有一个简单的模式要匹配,所以这不是必需的,您可以在其他解决方案中找到答案并执行类似的操作

/sh(are)/

然后只匹配第一组

于 2012-10-04T12:27:57.477 回答
0

如果我很好理解,我会使用这个正则表达式

/(Sh|\b)(are)/gi

whereare只能是单个单词或以 . 开头的子字符串Sh

于 2012-10-04T12:28:27.813 回答