Regex 做一个正则表达式
我想制作一个正则表达式来匹配字符串中的几个{curly}大括号 {text1}是{text2}和{if{xxx}else{xxx} 如果我使用{.*},它将匹配第一个{和最后一个},并且两者之间的所有内容不会单独匹配Regex 做一个正则表达式,regex,Regex,我想制作一个正则表达式来匹配字符串中的几个{curly}大括号 {text1}是{text2}和{if{xxx}else{xxx} 如果我使用{.*},它将匹配第一个{和最后一个},并且两者之间的所有内容不会单独匹配 我需要这个来阻止那些在本例中不需要我触摸的部分{text1}{text2}和{if{xxx}else{xxx},但是留下单词“the”“is”“and”“unlocked”。首先,你需要将花括号转义为\{/code>和\} 其次,你需要使用“不情愿的量词”而不是“贪婪的量词”*将匹
我需要这个来阻止那些在本例中不需要我触摸的部分{text1}{text2}和{if{xxx}else{xxx},但是留下单词“the”“is”“and”“unlocked”。首先,你需要将花括号转义为
\{/code>和\}
其次,你需要使用“不情愿的量词”而不是“贪婪的量词”*
将匹配尽可能多的字符,这取决于正则表达式作为一个整体的匹配,而*?
将匹配尽可能少的字符。所以您需要类似于\({.*?\})*
的东西
虽然问题中没有进一步提到XML,但您最初还是将问题标记为XML。如果此正则表达式用于XML模式(XSD),请注意XSD正则表达式方言不支持不情愿的量词。在这种情况下,另一种选择(无论如何可能是个好主意)是将
替换为[^}]
,它匹配除右括号之外的所有内容
如果您想分析包含嵌套大括号的字符串,那么正则表达式不是合适的工具:您需要编写一个解析器。您尝试了什么?不完全确定这里要问什么。但是如果您只感兴趣匹配“内部”卷曲,请考虑<代码> {[*}] +\}/COD>