2013-03-07 65 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