我怀疑这已经在某处得到了回答,但我找不到它,所以......
我需要从较大字符串中的两个标记之间提取一个字符串,其中第二个标记可能会再次出现,意思是...(伪代码...)
myString = "A=abc;B=def_3%^123+-;C=123;" ;
myB = getInnerString(myString, "B=", ";" ) ;
method getInnerString(inStr, startToken, endToken){
return inStr.replace( EXPRESSION, "$1");
}
所以,当我使用表达式“
.+B=(.+);.+
”运行它时我得到“def_3%^123+-;C=123;”大概是因为它只是寻找';'的最后一个实例在字符串中,而不是在它遇到的第一个处停止。
我试过使用 (?=) 来寻找第一个 ';'但它给了我同样的结果。
我似乎找不到解释如何指定“NEXT”标记而不是末尾标记的 regExp 引用。
非常感谢任何和所有帮助。
SO上的类似问题:
最佳答案
您通过未在其中指定 ?
来使用贪婪模式。试试这个:
".+B=(.+?);.+"
关于regex - 需要正则表达式来查找两个标记之间的子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/489567/