正则表达式匹配第一期的所有内容

尝试在句子的第一个句子之前获得所有内容的惰性正则表达式匹配。

例如,只想得到“杰克和吉尔”。 从这句话:
“杰克和吉尔。上山去取一桶。”

/.+\./匹配整个句子( 例子 )
/(.+?\.)/匹配每个实例( 示例 )

有没有办法匹配第一个实例?

 /^([^.]+)/ 

我们把它分解吧

  • ^是换行符锚点

  • [^.]这匹配任何不是句号的字符

  • \+需要一段时间

表达式用()封装以捕获它。

如果您只想要第一次出现,请不要选择返回字符串中所有结果的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