当前位置:  开发笔记 > 前端 > 正文

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

如何解决《需要regexp来查找两个令牌之间的子串》经验,为你挑选了2个好方法。

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

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

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=;之后的第一个.



1> Evan Fosmark..:

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

".+B=(.+?);.+" 



2> Gumbo..:

试试这个:

B=([^;]+);

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

推荐阅读
惬听风吟jyy_802
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有