2017-02-03 352 views
0

我试图创建一个表达式匹配地址城市和国家的名称,如正则表达式匹配的城市和州的地址

100 Hall of Justice 
1701 Farnam St. 
Omaha 
Nebraska 
68183 United States 

3208 Sheridan Ct. 
Lincoln 
Nebraska 
68506 

3710 S 192nd St 
Omaha 
Nebraska 
68130 United States 

IL Court of Appeals 2nd District 
55 Symphony Way 
Elgin 
Illinois 
60120 United States 

正如你可以看到,城市和国家的名称并不总是出现在地址内的同一位置(节点),但它们总是作为一个单独的字排列在整个地址之间的每一行

是否有一个ReGEX,我可以在这种情况下仅用于匹配城市和州名称,而不管它们在地址中的位置?

+0

你有没有尝试什么吗?什么是正则表达式? – anubhava

+0

嗨Anubhava - 我不知道正则表达式的味道。我是很新的正则表达式,但也有一些我使用 其他表达式。+(?= \ s + \(]手机[\)]) ^ * \ d + \ S \ w + \ S \ w + 我使用这些与WinAutomation软件提取网页 数据我想'\ w +'和'\ w +'但分别匹配地址中的每字每句,我似乎无法让它只匹配了城市和国家 –

+0

试试这个正则表达式中'MULTILINE'模式:'^([\ w - ] +)\ n([\ w - ] +)' – anubhava

回答

1

在最简单的情况下,下面的正则表达式模式将得到所需要的城市和国家名称

(\w+)\n(\w+)\n\d+(\s+United States)?\n?$ 

https://regex101.com/r/U50ZbJ/3

(\w+)\n(\w+) - 两个捕获组,这将匹配城市状态分别

0

基于@RomanPerek hrest的答案,现在它将匹配城市名称和州名中的两个(或更多)单词。

([a-zA-Z ]+)\n([a-zA-Z ]+)\n\d+(\s+United States)?\n?$