2012-11-05 111 views
0

對於需要拆分句子表達的正則表達式。
我需要一個正則表達式的方法來拆分句子了。
下面的句子結構需要被分解成各個組成部分:正則表達式拆分句子分成多個組

問題,選項,AnswerType以下列分隔符劃分...

Question : OptionA, OptionB, OptionC ? AnswerType 

EXAMPLES: 
Color: Yellow, Green, Red ? ListBox 
Color ? ListBox 

正如你所看到的,第二個例子中沒有選項這需要考慮。 輸出理想的情況如下所示組

我在VB.NET工作,如果有什麼差別。

回答

1

我不知道該怎麼正則表達式的作品在vb.net但這裏有一個一般的圖案和良好的DEMO

正則表達式解釋:

(?P<question>\w+)\s*(?::\s*(?P<options>\w+(?:,\s*\w+)*))?\s*\?\s*(?P<type>\w+)

在P <名稱>確定反向引用該組的名稱,您只需循環,即可將所有內容分組。

嘗試新的正則表達式(後綴):DEMO我只是在問題後面添加了(sufix)的可能性。

的更新正則表達式:

(?P<question>\w+)\s*(?P<suffix>\(\w+\))?\s*(?::\s*(?P<options>\w+(?:,\s*\w+)*))?\s*\?\s*(?P<type>\w+)

更新2:用空格和工作' - >(?P<question>[\w '-]+)\s*(?P<suffix>\([\w '-]+\))?\s*(?::\s*(?P<options>[\w '-]+(?:,\s*[\w '-]+)*))?\s*\?\s*(?P<type>[\w '-]+)

DEMO

+0

感謝這個看上去很不錯,除了我覺得VB.NEt必須使用不同的因爲它給我錯誤「無法識別的分組構造」。看起來像P後?正在造成麻煩。 – Lars

+0

成功!之後我放棄了P並且它在VB.NET中完美運行。 DEMO網站太棒了!謝謝! – Lars

+0

哈維爾:怎麼樣,如果我想添加一個名爲「後綴」,將在()的問題分組後封閉額外的可選組。示例:尺寸(mm):黃色,綠色,紅色列表框大小:小,中,大?列表年齡(年)?列表框 – Lars