so yeh lets say we got string " I am will the crazy will boy .. ", now the "I am (.*) will" would basically return "I am will the crazy will" and "I am (.*?) will" would return "I am will", so basically .*? means it stops first match it finds instead of .*