[英]Ruby Regexp character class with new line, why not match?
我想使用此正则表达式来匹配字符串中的任何块注释(c样式)。 但是为什么下面没有呢?
rblockcmt = Regexp.new "/\\*[.\s]*?\\*/" # match block comment
p rblockcmt=~"/* 22/Nov - add fee update */"
==> nil
除了Swoveland爵士张贴的内容外,还有一个.
匹配除换行符以外的任何字符:
以下元字符的行为也类似于字符类:
/./
除换行符外的任何字符。
如果需要的话.
要匹配换行符,可以指定m
标志,例如/.*?/m
选项
正则表达式的结束定界符后可以跟一个或多个单字母选项,这些选项控制模式的匹配方式。
/pat/i
忽略大小写
/pat/m
将换行符视为与匹配的字符.
...
因为有例外/怪癖(例如换行符)不匹配.
可能会很痛苦,有些人为他们编写的每个正则表达式指定了m
选项。
您似乎打算[.\\s]*?
懒惰地匹配零个或多个字符或空格。 首先,空格是字符,因此您不需要\\s
。 这简化了您对[.]*?
表达[.]*?
。 其次,如果您要匹配任何字符,则不需要字符类,只需编写即可.
。 第三, 也是最重要的是 ,字符类中的句点就是字符"."
。
你想要.*?
(或[^*]*
)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.