Since {0,1} means 'this occurs 0 or 1 times' it can be replaces by ?, since that means the same. So the following also works:
^([a-z,A-Z,\.]+) ([a-z,A-Z]+(\s(jr|sr)\.?)?)
Also the , in the [a-z,A-Z,\.] blocks are not necessary, if you do want to allow a comma you can leave it in, but once is enough [a-zA-Z,\.], without the , you can just use [a-zA-Z\.] . Moreover, I see that the suggestion for Jr./Sr. is only lower case, so I assume you do not have case sensitivity enabled, so then [a-z\.] would also suffice for the first names, resulting in this:
^([a-z\.]+) ([a-z]+(\s(jr|sr)\.?)?)
Now for an alternative suggestion to the shown data:
In your data example the full names are before a \ and the first name is probably 'anything before the first space' and last name 'everything after the space until the \' you can simply use:
(.+?) (.+?)\\
The first group will match everything until the first space, the second group everything after that until the first backslash, and both groups must contain at least one character.