每个人
我认为我在ruby正则表达式中缺少一些东西。
似乎我不能使用%r/match code/s
,因为Ruby只有/m
,这不允许我搜索我的匹配线而忽略新的线符号。
我现在需要的是:
line 1 : a b c
line 2 : a b
line 3 : c
line 4 : a
line 5 : b c
我需要在这里找到三场比赛
1. a b c
2. a b (new line) c
3. a ( new line ) b c
这可以通过使用/ s标志来完成,但是/ s标志用于Ruby中的编码,而/ m标志只是让我与所有文本匹配
a b c
a b ( new line ) c
a ( new line ) b c
当我搜索这样的表达式%r/a.*c/m
我将不胜感激任何信息。
答案 0 :(得分:5)
Ruby正在使用m
启用dotall模式,请参阅regular-expressions.info。因此,您的表达式正是您想要的s
修饰符。
你的问题与众不同,你的正则表达式太贪婪了。所以你应该把它改成
%r/a.*?c/m
所以.*?
只会匹配下一个“c”而不是最后一个。
答案 1 :(得分:2)