需要regexp来查找两个令牌之间的子串

Gen*_* S. 4 regex regex-greedy

我怀疑这已经在某处得到了回答,但我找不到它,所以...

我需要从一个更大的字符串中的两个标记之间提取一个字符串,其中第二个标记可能会再次显示... ...(伪代码...)

myString = "A=abc;B=def_3%^123+-;C=123;"  ;

myB = getInnerString(myString, "B=", ";" )  ;

method getInnerString(inStr, startToken, endToken){
   return inStr.replace( EXPRESSION, "$1");
}
Run Code Online (Sandbox Code Playgroud)

所以,当我使用表达式" .+B=(.+);.+" 运行时,我得到"def_3%^ 123 + - ; C = 123;" 大概是因为它只是寻找';'的最后一个例子 在字符串中,而不是在第一个停止.

我尝试使用(?=)搜索第一个';' 但它给了我相同的结果.

我似乎找不到一个regExp引用来解释如何指定"NEXT"令牌而不是最后一个令牌.

任何和所有的帮助非常感谢.


关于SO的类似问题:

Eva*_*ark 7

您没有指定其中的贪婪模式?.试试这个:

".+B=(.+?);.+" 
Run Code Online (Sandbox Code Playgroud)


Gum*_*mbo 5

试试这个:

B=([^;]+);
Run Code Online (Sandbox Code Playgroud)

这匹配之间的所有内容B=,;除非它是一个;.所以它匹配之间B=;之后的第一个.