我需要找到一个正则表达式,将从下面的字符串中提取城市名称。字符串的顺序是餐厅名称,地址,城市,电话,美食类型Chinois on Main 2709 Main St. Santa Monica 310-392-9025 Pacific New WaveBenita's Frites 1433 Third St. Promenade Santa Monica 310-458-2889 Fast FoodIndo Cafe 10428 1/2 National Blvd. LA 310-815-1290 IndonesianDiaghilev 1020 N. San Vicente Blvd. W. Hollywood 310-854-1111 RussianJody Maroni's Sausage Kingdom 2011 Ocean Front Walk Venice 310-306-1995 Hot Dogs我尝试了此正则表达式,但不起作用:zagat['city'] = zagat['raw'].str.extract(""" ((?<=Ave.|Rd.|St.|Blvd.|Dr.|Way.|Pl.|Ln.|Ct.|Beach|Way ).+(?=...-...-....)) """, expand=True)你能帮我吗? 最佳答案 您可以使用rx = r'(?:(?:Ave|Rd|St|Blvd|Dr|Way|Pl|Ln|Ct)\.|Beach|Way|Walk)\s*(.+?)\s*\d{3}-\d{3}-\d{4}'zagat['city'] = zagat['raw'].str.extract(rx, expand=False)请参见regex demo细节(?:(?:Ave|Rd|St|Blvd|Dr|Way|Pl|Ln|Ct)\.|Beach|Way|Walk)-Ave,Rd,St,Blvd,Dr,Way,Pl,Ln或Ct,后跟.或Beach,或WayWalk-0+空格\s*-组1(此值将由(.+?)返回):除换行符外的任何一个或多个字符,应尽可能少.extract-0+空格\s*-3位数字,\d{3}-\d{3}-\d{4},3位数字,-和4位数字。关于python - 在不验证固定宽度模式的情况下,正则表达式模式无法使用后视功能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55250643/ 10-12 13:55