RegEx捕获组排除特定模式

时间:2016-02-11 17:15:30

标签: regex

我试图想出一个RegEx模式,它采用如下所示的字符串:

KEEP_THIS_L_1234  
KEEP_THIS_R_12  
KEEP_THIS  

并返回一个包含此结果的捕获组:

KEEP_THIS
KEEP_THIS
KEEP_THIS

到目前为止,我已尝试/^(\w+)(?=_(L|R))(?=_\d{0,4})/,但此模式仅返回前两个实例的捕获组:

KEEP_THIS
KEEP_THIS

有人能帮我理解我错过的东西吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

你需要让最后两组可选,如下所示:

/^(\w+?)((_(L|R))(_\d{0,4}))?$/

您想要的结果将始终为1美元。

这样做的好处是,您捕获的其他数据(如果有)将分为2美元和3美元。

答案 1 :(得分:0)

如下所示更改正则表达式。

^(\w+)(?=(?:_[LR]_\d{0,4})|$)

DEMO