我怀疑这已经在某处得到了回答,但我找不到它,所以...
我需要从一个更大的字符串中的两个标记之间提取一个字符串,其中第二个标记可能会再次显示... ...(伪代码...)
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;" 大概是因为它只是寻找';'的最后一个例子 在字符串中,而不是在第一个停止.
我尝试使用(?=)搜索第一个';' 但它给了我相同的结果.
我似乎找不到一个regExp引用来解释如何指定"NEXT"令牌而不是最后一个令牌.
任何和所有的帮助非常感谢.
关于SO的类似问题:
正则表达式:在字符串中的两个标记之间拉出一个子字符串
正则表达式替换字符串中的所有\n,但不包括[code] [/ code]标记内的所有\n
使用正则表达式调用替换分隔符内的模式
RegEx匹配HTML标记并提取文本
Evan Fosmark.. 7
您没有指定其中的贪婪模式?
.试试这个:
".+B=(.+?);.+"
Gumbo.. 5
试试这个:
B=([^;]+);
这匹配之间的所有内容B=
,;
除非它是一个;
.所以它匹配之间B=
和;
之后的第一个.
您没有指定其中的贪婪模式?
.试试这个:
".+B=(.+?);.+"
试试这个:
B=([^;]+);
这匹配之间的所有内容B=
,;
除非它是一个;
.所以它匹配之间B=
和;
之后的第一个.