请仔细阅读 :这有点不寻常,您会很想说“这不是如何使用正则表达式”或“伙计,只需使用 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/