如何在字符之间进行匹配,但不将它们包含在结果中

How to match between characters but not include them in the result

本文关键字:包含 结果 之间 字符      更新时间:2024-01-05

假设我有一个字符串"&something=variable&omething_else=var2"

我想在&something=和&,所以我会写一个正则表达式,看起来像:

/(&something=).*?(&)/

match()的结果将是一个数组:

["&something=variable&", "&something=", "&"]

我一直通过手动替换开始和结束元素来解决这个问题,但有没有办法完全不将它们包括在匹配结果中?

您使用了错误的捕获组。你应该使用这个:

/&something=(.*?)&/

这意味着,您不需要捕获您不想要的东西(分隔符),而是捕获您想要的内容(数据)。

您根本无法避免它们出现在您的匹配结果中,但您可以更改它们的显示方式,使其对您更有用。

如果您将匹配模式更改为/&something=(.+?)&/,则使用"&something=variable&something_else=var2"的测试字符串,匹配结果数组为["&something=variable&", "variable"]

第一个元素总是整个匹配,但第二个元素将是从括号中捕获的部分,这通常更有用。

我希望这能有所帮助。

如果您正试图从字符串中获取variable,使用replace with backreferences将获得您想要的内容:

"&something=variable&something_else=var2".replace(/^.*&something=(.*?)&.*$/, '$1')

给你

"variable"