我正在尝试使用正则表达式从 less css 预处理器源代码文件中提取变量,但我的问题可以更普遍地提出。
我需要制作一个像这样工作的正则表达式:
- 输入:
@one:cat
输出:cat
- 输入:
@one:dog;
输出:dog
请注意“dog”后面的最后一个分号,我不希望捕获它。
我几乎可以使用:new RegExp('^.*:\\s*(.*?);?');
但是我的最终 ;?
并未被排除在匹配 (.*?)
之外。
如何让我的选择不那么贪婪?
最佳答案
像您一样,通过在量词后面添加 ?
来使它们“不那么贪婪”。问题是您还没有添加结束 anchor $
- 如果您添加了正则表达式将按预期工作。该极端情况下的行为取决于正则表达式引擎;例如,.NET 引擎在这种情况下只会匹配单个字符(d
表示 dog
情况)并停止。
但是,恕我直言,这不是解决方案。您应该更精确地描述模式,然后它甚至可以与贪婪匹配一起使用。
/^[^:]+:\s*([^;]+);?/;
关于javascript - 正则表达式不包括捕获组后的匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40405024/