使用 Perl 正则表达式提取匹配项

Extracting matches with Perl regex

我正在尝试从这个 ­a lot of text...[RL2.OPT.TEST.01]<some more text 中提取以下字符串 RL2.OPT.TEST.01。基本上 ­RL2. 之前可以有任何内容,但它总是以 ­RL2. 开头,并且总是以 ­]­< 或 space 结束。

我尝试使用以下正则表达式:m/RL2\..*[\s<\]]+?$/g 但即使它找到了字符串 ­-- [RL2.OPT.TEST.01] 的匹配项,它也不适用于 ­-- [RL2.OPT.TEST.01] some more text.

我需要一个包含大字符串中所有匹配结果的数组。我想我还应该提到这个字符串有很多换行符,但从来没有在我试图提取的字符串中间。

关于我的正则表达式有什么问题的任何线索?

使用否定字符class并删除行尾锚点$

m/RL2\.[^\s<\]]*/g

DEMO

[^\s<\]]* 否定字符 class 匹配任何字符但不匹配 space 或 <] 零次或多次。