正则表达式匹配第一期的所有内容
尝试在句子的第一个句子之前获得所有内容的惰性正则表达式匹配。
例如,只想得到“杰克和吉尔”。 从这句话:
“杰克和吉尔。上山去取一桶。”
/.+\./
匹配整个句子( 例子 )
/(.+?\.)/
匹配每个实例( 示例 )
有没有办法匹配第一个实例?
/^([^.]+)/
我们把它分解吧
-
^
是换行符锚点 -
[^.]
这匹配任何不是句号的字符 -
\+
需要一段时间
表达式用()封装以捕获它。
如果您只想要第一次出现,请不要选择返回字符串中所有结果的scan
方法。 您可以使用返回MatchData实例的match方法,但您也可以简单地写:
> "jack and jill. went up the hill. to fetch a pail."[/.+?\./] => "jack and jill."
我倾向于使用正则表达式,但还有其他选择。
str = "jack and jill. went up the hill. supposedly to fetch a pail of water." str[0..i] if i = str.index('.') #=> "jack and jill." str = "three blind mice" str[0..i] if i = str.index('.') #=> nil