Regex 做一个正则表达式

Regex 做一个正则表达式,regex,Regex,我想制作一个正则表达式来匹配字符串中的几个{curly}大括号 {text1}是{text2}和{if{xxx}else{xxx} 如果我使用{.*},它将匹配第一个{和最后一个},并且两者之间的所有内容不会单独匹配 我需要这个来阻止那些在本例中不需要我触摸的部分{text1}{text2}和{if{xxx}else{xxx},但是留下单词“the”“is”“and”“unlocked”。首先,你需要将花括号转义为\{/code>和\} 其次,你需要使用“不情愿的量词”而不是“贪婪的量词”*将匹

我想制作一个正则表达式来匹配字符串中的几个{curly}大括号

{text1}是{text2}和{if{xxx}else{xxx}

如果我使用{.*},它将匹配第一个{和最后一个},并且两者之间的所有内容不会单独匹配


我需要这个来阻止那些在本例中不需要我触摸的部分{text1}{text2}和{if{xxx}else{xxx},但是留下单词“the”“is”“and”“unlocked”。

首先,你需要将花括号转义为
\{/code>和
\}

其次,你需要使用“不情愿的量词”而不是“贪婪的量词”
*
将匹配尽可能多的字符,这取决于正则表达式作为一个整体的匹配,而
*?
将匹配尽可能少的字符。所以您需要类似于
\({.*?\})*
的东西

虽然问题中没有进一步提到XML,但您最初还是将问题标记为XML。如果此正则表达式用于XML模式(XSD),请注意XSD正则表达式方言不支持不情愿的量词。在这种情况下,另一种选择(无论如何可能是个好主意)是将
替换为
[^}]
,它匹配除右括号之外的所有内容


如果您想分析包含嵌套大括号的字符串,那么正则表达式不是合适的工具:您需要编写一个解析器。

您尝试了什么?不完全确定这里要问什么。但是如果您只感兴趣匹配“内部”卷曲,请考虑<代码> {[*}] +\}/COD>