2013-07-01 265 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)那麼它應該返回什麼?我沒有爲此做一個平衡組。 –