1. 0 (0 + 1)* 1
  2. (1* 0 1* 0 1* 0 1* 0 1* 0 1*)*
  3. you can't do this with a regular expression. How can you tell? the clue is that this language requires counting. Regular expressions can't 'count.'
  4. This one is hard - I wouldn't expect you to get it. My answer probably isn't the best one, either:
    (0* + (01)*)* + 1(0* + (01)*)*
    (The first part represents strings that start with 0, (and the empty string), while the second represents those strings which start with 1)