说我有一个字符串“& something = variable& something_else = var2”
我想在& something =和&之间进行匹配,所以我会写一个看起来像这样的正则表达式:
/(&something=).*?(&)/
.match()的结果将是一个数组:
["&something=variable&", "&something=", "&"]
我总是通过手动替换开始和结束元素来解决这个问题,但有没有办法在匹配结果中不包括它们?
答案 0 :(得分:2)
您正在使用错误的捕获组。你应该使用这个:
/&something=(.*?)&/
这意味着您不会捕获您不想要的东西(分隔符),而是捕获您想要的东西(数据)。
答案 1 :(得分:1)
根本无法避免它们出现在您的匹配结果中,但您可以更改它们的显示方式并使其对您更有用。
如果您将匹配模式更改为/&something=(.+?)&/
,那么使用"&something=variable&something_else=var2"
的测试字符串匹配结果数组为["&something=variable&", "variable"]
第一个元素总是整个匹配,但第二个元素将是括号中捕获的部分,这通常更有用。
我希望这会有所帮助。
答案 2 :(得分:-1)
如果您试图从字符串中获取variable
,那么使用替换后缀可以获得您想要的内容:
"&something=variable&something_else=var2".replace(/^.*&something=(.*?)&.*$/, '$1')
给你
"variable"