2013-07-01 210 views
1
{unknown string} 
{unknown string 
unknown string} 
unknown string 

我怎么想出识别只是字符串一个正则表达式(这是未知的,所以我不能做一个明确的匹配到一个特定的字符串)在上述情况下,所有四个?正则表达式忽略大括号

+1

仅供参考,你看起来是被一个叫“C#正则表达式”其实是“.NET正则表达式”。与JavaScript等语言不同,C#编程语言不支持正则表达式,而JavaScript等内置此类支持的语言不同。 –

+0

.Net构建到C#中... sorta。 – mcmonkey4eva

+0

@AndreyShchekin这将匹配大括号。他不想要这些。 –

回答

3

你没怎么试过了,是吗?

string result = Regex.Match(input, "hello").Value; 

如果你只是想花括号之间的事情:

string result = Regex.Match(input, @"\{?(.*)\}?").Groups[1].Value; 
+0

嗯,这是事实,但我在寻找更多的通用性。假设我有以下表达式:get {* body *}但我不知道正文的内容(因此不能匹配特定的字符串),还有一种方法吗? – wemblem

+0

@wemblem固定。 –

+0

而在只有一个支架的情况下? {^? – wemblem

2
\w+ 

它将匹配所有的“字” -characters

如果你需要将它推广到东西是“可选的大括号”你可以使用:

\{?(.+?)\}? 

这意味着:

  1. \{? - 一个可选的大括号字符。由于{在正则表达式中有特殊含义,所以它被转义了。 ?量词表示01次(因此可选)
  2. (.+?) - 表示任何非贪婪模式。你需要非贪婪使这里正则表达式正确的,下面这些}(如果有的话)
  3. \}?停止 - 一样的项目#1
+0

'。+?'是怎么处理的?改用'。*'。你可能想在这里贪婪的模式tbh。 –

+0

@newStackExchangeInstance:1.我不确定是否需要返回一个空字符串作为匹配,但根本不匹配2.我不确定对于{foo} {bar}输入你需要得到'foo} {bar'作为结果。 – zerkms

+0

1)其中的内容不算什么,所以我认为它应该与无关。 2)那么它应该返回什么?我没有为此做一个平衡组。 –