2013-03-07 62 views
1

Ruby的正則表達式我需要寫一個正則表達式表達的線,如這些:的條件表達式

constraint :name, 'name != nil' 
constraint :name, 'name =~/^[A-Z]/' 
constraint :age, 'age >= 0' 

的線路總是包含單詞「約束」,以及任何詞可以來後「: 「 其次是 」,」。

條件表達式將出現在''中。

我寫了一個正則表達式是這樣的:

/^constraint :(\w*),'(.*)'$/ 

而且它不匹配。我是Ruby和正則表達式的新手。誰能幫幫我嗎?

+0

可以包含單引號嗎?你會在這裏滑下坡路。什麼是最終目的? – 2013-03-07 12:28:37

+0

這是單引號,在行中。這些行在我的任務中給出。我必須能夠提取這些行中所說的內容,以便能夠動態地創建一個新類並添加給定約束的屬性。 – flickaRW 2013-03-07 12:35:40

+0

@DaveNewton在任何情況下,似乎約束的名稱不能包含單引號,並且約束值不能包含新行......在這種情況下,''。*'$'應該捕獲它。 – m4573r 2013-03-07 12:36:33

回答

3

忘記逗號後的空格。 嘗試/^constraint :(\w*), '(.*)'$/

雖然更一般,我會去這個:/^constraint :([^,]+),\s*'(.*)'$/

+0

謝謝,第二個人工作! – flickaRW 2013-03-07 12:30:34

+0

實際上在閱讀Dave Newton的評論後,我認爲使用'/ ^約束會更好:([^,] +),\ s *'(。*)'$ /' – m4573r 2013-03-07 12:34:50

+0

非常感謝! – flickaRW 2013-03-07 12:45:21