Your expression matches the first dot and .*? would match dots as well. Thus you get Shyam and you... as a match. Try changing (.*?are.*?) to ([^\\.]*?are[^\\.]*?) to match all characters except the dot.
Note that you could also simplify your expression to \s*([^\.]*are[^\.]*) (non-Java notation here). This would have the same result but would also match "You are Shyam. You are Mike.".
This expression would match any sequence of characters not beeing a dot with an "are" in between and preceded by optional whitespace. Note that this would also match are alone, so you might want to change [^\.]* to [^\.]+.
Edit:
To account for your updated example, you could try this expression (a break down follows):
\s*((?:[^\.]|(?:\w+\.)+\w)*are.*?)(?:\.\s|\.$)
Input: I am here. You are almost 2.3 km away from home. You are Mike. You are 2. 2.3 percent of them are 2.3 percent of all. Sections 2.3.a to 2.3.c are 3 sections. This is garbage.
Output: You are almost 2.3 km away from home, You are Mike, You are 2, 2.3 percent of them are 2.3 percent of all, Sections 2.3.a to 2.3.c are 3 sections
A few notes: this would require each sentence to end with a dot (this could be changed by replacing \.\s|\.$ with [.!?]\s|[.!?]$), each delimiting dot to be followed by either a whitespace or the end of the input and would not match You are J. J. Abrams or 2.a
Note that in that case it is really hard for the computer to determine the end of the sentence, especially with "simple" regex.
Expression break down:
\s* leading whitespace would not be part of the group, otherwise this is not needed
((?:[^\.]|(?:\w+\.)+\w)*are.*?) The captured group, containing the are and additional text before and after
(?:[^\.]|(?:\w+\.)+\w) a non-capturing group matching either any sequence of non-dot characters ([^\.]) or (|) a a sequence of word characters (\w as a shortcut for [a-zA-Z0-9_]) with single dots in between ((?:\w+\.)+\w), also non-capturing)
.*? any sequence of characters but with a lazy modifier to match the shortest possible sequence instead of the longest (without it, the next part wouldn't make much sense)
(?:\.\s|\.$) a non-capturing group that must follow the captured group, it must either match a dot followed by whitespace (\.\s) or (|) a dot at the end of the input (\.$)
Edit 2:
Here's a not thoroughly tested version without a (A|B)* group:
\s*([^.]*(?:(?:\w+\.)+\w+[^.]*)*are.*?)(?:[.!?]\s|[.!?]$)
Basically (?:[^\.]|(?:\w+\.)+\w)* has been replaced with [^.]*(?:(?:\w+\.)+\w+[^.]*)*, which means "any sequence of non-dot characters followed by any number of sequences consisting of dots surrounded by word characters and followed by any sequence of non-dot characters". ;)
You are 2.3 km away from home.occurs twice in the input and only once in the desired output?^and$allows you capturing the beginning and the end of a String