There is a string which can have one or several string ranges. These are correct strings:
\"\" \"asd-asd\" \"asd-asd;asd-asd\" \"asd-asd;asd-asd;\" \"asd-asd;asd
It matches because of ;? which makes the ; optional. You are trying to test something with context, regex is not the easiest tool to do this.