正则表达式获取两个字符之间的文本

标签 regex

请仔细阅读 :这有点不寻常,您会很想说“这不是如何使用正则表达式”或“伙计,只需使用 String.SubString()”等...

我需要编写一个正则表达式(使用预先存在的方法)来匹配大括号之间的文本,但不是大括号本身。

例如: “{MatchThisText}” “啦啦啦{MatchThisText}啦啦啦...”
两者都应该匹配: “匹配此文本”

Someone asked this exact question a year ago ,并且他得到了一堆正则表达式的解决方案,除了“MatchThisText”之外,这些解决方案将匹配花括号,导致匹配“{MatchThisText}”,这不是他(或我)需要的。

如果有人可以编写一个实际上只匹配花括号之间的字符的正则表达式,我会非常感激。它应该允许任何 ASCII 值,并且应该在第一个右括号处停止匹配。

例如: “{retailCategoryUrl}/{filters}”
应该匹配: RetailCategoryUrl 和过滤器
但不匹配: “retailCategoryUrl}/{filters”(除了大括号之外的所有东西)

嘿,这对我来说真的很棘手,所以如果这对你们中的一些人来说是微不足道的,请原谅这个问题。

谢谢!

最佳答案

Python:

(?<={)[^}]*(?=})

在上下文中:
#!/usr/bin/env python

import re

def f(regexStr,target):
    mo = re.search(regexStr,target)
    if not mo:
        print "NO MATCH"
    else:
        print "MATCH:",mo.group()

f(r"(?<={)[^}]*(?=})","{MatchThisText}")
f(r"(?<={)[^}]*(?=})","La la la {MatchThisText} la la la...")

打印:
MATCH: MatchThisText
MATCH: MatchThisText

关于正则表达式获取两个字符之间的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4026685/

相关文章:

java - 括号之间的简单正则表达式

PHP如何删除字符串中的单词?

regex - 如何使用 Regex 在 Bash 中查找递归子字符串?

java - 正则表达式来剪切文本

c - flex/lex 中字符串文字的正则表达式

java - 正则表达式标记日志行

MySQL REGEXP 字边界 [[ :<:]] [[:>:]] and double quotes

javascript - 将 C# RegEx 转换为 JavaScript 会出现错误 Invalid Group

java - 在保留单词的第 n 个字符处拆分字符串

Javascript RegEx - 字符串异常的开始和结束