regex - 需要正则表达式来查找两个标记之间的子字符串

标签 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");
}

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

我试过使用 (?=) 来寻找第一个 ';'但它给了我同样的结果。

我似乎找不到解释如何指定“NEXT”标记而不是末尾标记的 regExp 引用。

非常感谢任何和所有帮助。

SO上的类似问题:
  • Regex: To pull out a sub-string between two tags in a string
  • Regex to replace all \n in a String, but no those inside [code] [/code] tag
  • Replace patterns that are inside delimiters using a regular expression call
  • RegEx matching HTML tags and extracting text
  • 最佳答案

    您通过未在其中指定 ? 来使用贪婪模式。试试这个:

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

    关于regex - 需要正则表达式来查找两个标记之间的子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/489567/

    相关文章:

    正则表达式不够贪婪

    java - 为什么星号量词比Java正则表达式中的加号量词更贪婪?

    regex - 。+之间有区别(如果有)。和。*

    javascript - 正则表达式查找以 # 开头直到空格的字符串

    java - 在Java中使用正则表达式提取子字符串

    Java正则表达式模式匹配长度

    java - 如何在特定字符串之后获得更多组匹配?

    php - 穿梭在每根弦之间

    regex - 如何限制多行文本框只接受一个数字?

    python - 如何在 Python 中使用 re.sub?