如何匹配Ruby中多行字符串中\n以外的任何字符?
此测试未通过,因为表达式如何匹配Ruby中多行字符串中\n以外的任何字符?,ruby,regex,Ruby,Regex,此测试未通过,因为表达式[/.*/m]返回“abc\n123”而不是“abc123”。我做错了什么?我使用来匹配非换行字符,*来匹配所有字符,m来匹配多行字符,但它也会返回\n。如果不想匹配换行符,则从测试中删除/m 发件人: /m使点与换行符匹配。Ruby确实使用/m,而Perl和许多其他编程语言使用/s表示“点匹配换行符” 或者确实是从以下方面: /./-除换行符以外的任何字符 //m-任何字符(m修饰符启用多行模式) 就目前而言,您的测试是不可能的,您正在尝试测试Ruby是否做了与设计相反
[/.*/m]
返回“abc\n123”而不是“abc123”。我做错了什么?我使用
来匹配非换行字符,*
来匹配所有字符,m
来匹配多行字符,但它也会返回\n
。如果不想匹配换行符,则从测试中删除/m
发件人:
/m
使点与换行符匹配。Ruby确实使用/m
,而Perl和许多其他编程语言使用/s
表示“点匹配换行符”
或者确实是从以下方面:
/./
-除换行符以外的任何字符
//m
-任何字符(m修饰符启用多行模式)
就目前而言,您的测试是不可能的,您正在尝试测试Ruby是否做了与设计相反的事情(幸运的是,它没有做到)。如果您不想匹配换行符,请从测试中删除
/m
发件人:
/m
使点与换行符匹配。Ruby确实使用/m
,而Perl和许多其他编程语言使用/s
表示“点匹配换行符”
或者确实是从以下方面:
/./
-除换行符以外的任何字符
//m
-任何字符(m修饰符启用多行模式)
就目前而言,您的测试是不可能的,您正在尝试测试Ruby是否做了与设计相反的事情(幸运的是,它没有做到)。也许从相反的方向解决问题,并删除您不想要的特定字符串是一种解决方案
def test_period_is_a_shortcut_for_any_non_newline_character
assert_equal "abc123", "abc\n123"[/.*/m]
end
也许从相反的方向解决问题,并删除您不想要的特定字符串是一种解决方案
def test_period_is_a_shortcut_for_any_non_newline_character
assert_equal "abc123", "abc\n123"[/.*/m]
end
卸下
m
?这是dotall标志删除m
?那是多特旗