Selecting site to browse in python
Here is a list of things I would improve:


variable naming - PEP8 recommends to use lower_case_with_underscores style of variable names
instead of a regular expression, you can use urlparse to parse the domain name
you can use a dictionary comprehension to construct a dictionary of sites
you don't actually need a boolean flag for your while loop - instead initialize an endless loop and break it once the input is valid 
instead of calling .keys() and passing the "viewkeys" result to str.join() - you can pass your dictionary directly


Improved code:

from urllib.parse import urlparse


with open('sites.txt') as input_file:
    sites = {
        urlparse(url).netloc.split('.')[0]: url
        for url in input_file
    }

print('Sites: ', ', '.join(sites), '\n')

while True:
    search_site = input("Which site would you like to search?\n")
    if search_site in sites:
        url_search = sites[search_site]+'/search?q='
        print(url_search)
        break


Further thoughts:


make the code more modular and extract parts of the code into separate functions - at this moment, it is clear that you have 2 separate high-level things you do in the code - getting the dictionary of sites and getting the user's input
put the execution code to under the if __name__ == '__main__': to avoid the code to be executed on import
you don't actually need to handle the list of sites manually - StackExchange provides an API endpoint with that information