我尝试应用的规则:
第1组必须始终包含文本,如果字符串以"开头,则"然后也包括它。
组2是可选的,可以是(街道或道路)。
组3是可选的,可以包含(东或西)。
我已经掌握了以下内容的大部分(我认为):
(.+?)bs?((?i)ROAD|STREET)*.?((?<= +)(?i)WEST|EAST)?$
,但有两个例外:"street"是分开的,但需要都在第1组,因为它以"the"开头。"STREET"在组2,但需要在组1组1总是需要一个值
<表类>文本 与 位置长度组1 组2 集团3 tbody><<tr> 史密斯史密斯0 5道明> 街上街上 5 11 街 街道街 16 7 街 街道西 街道西 23 16 街 西 史密斯街 史密斯街 39 13道明> 街 路史密斯史密斯路 52 11道明> 道路 史密斯strreet东 史密斯strreet东 63 19 史密斯strreet 东 史密斯 史密斯82 6道明> 史密斯街 史密斯街 88 13道明> 街 史密斯街 史密斯街 101 14道明> 街 史密斯街西abc 史密斯街西abc 115 22 史密斯街西abc 史密斯街东 史密斯街东 137 18道明> 街 东 史密斯SttReet东 史密斯SttReet东 155 19 史密斯SttReet 东 史密斯街西 史密斯街西 174 18道明> 街 西 表类>
((.+?)bs?((?i)ROAD|STREET)*).?((?<=)(?i)WEST|EAST)?$
我做了两个改动:
- 我删除了空白和加号
+
。它修复了空白组1 - 我将
the
和street
分组。如果两者都存在,则出现在第1组