我有一个正则表达式来匹配我的字符串中的{和}之间的任何内容。如何匹配正则表达式的内部可能结果
“/{.*}/”
不能再简单。当我有一个多行匹配的行时出现问题。所以,如果我有这样一行:
这是我的{string}里,它没有{}工作正确
正则表达式匹配
{string}里,它没有{}工作
而不是
{string}
我该如何得到它以匹配第一个结果?
我有一个正则表达式来匹配我的字符串中的{和}之间的任何内容。如何匹配正则表达式的内部可能结果
“/{.*}/”
不能再简单。当我有一个多行匹配的行时出现问题。所以,如果我有这样一行:
这是我的{string}里,它没有{}工作正确
正则表达式匹配
{string}里,它没有{}工作
而不是
{string}
我该如何得到它以匹配第一个结果?
问号的意思是“非贪婪”
"/{.*?}/"
使用字符类,包含除了右括号的一切:
/{[^}]+}/
这是比接受的答案更好的习惯。对于更复杂的正则表达式来说,这不会成为灾难性回溯的牺牲品。 http://www.regular-expressions.info/catastrophic.html – 2009-07-09 18:14:18
默认行为是贪婪匹配,即第一{去年}。使用懒惰匹配的? 。之后你*,
/{.*?}/
甚至而非*使用 “不是一个}”
/{[^}]*}/
这将单嵌套大括号的工作只有一个深度:{(({.*?})*|.*?)*}
我我不知道如何获得无限的深度,或者甚至可以使用正则表达式。
我认为这更具可读性。 – mkb 2009-07-09 17:44:56