如何使用RegExp匹配两个模式

如何使用RegExp匹配两个模式,regex,excel,vba,excel-2007,Regex,Excel,Vba,Excel 2007,我在一个单元格中有50000个姓名和地址,我想将每个元素提取到单独的单元格中,但是一个特定的区域会引起头痛。一些地址字段包含街道地址的两个数字。例如,一个单元格可能包含“Mr Smith 10 Rillington Place Exeter Devon”,这很好,因为我的代码将名称street city和County分开。但有些牢房里有“史密斯父子有限公司,萨里郡萨顿大街10号和12号” 我尝试过.Pattern=“(\d+\d+\[d+&\d+])”但这与.Pattern=“(\d+\d+)”

我在一个单元格中有50000个姓名和地址,我想将每个元素提取到单独的单元格中,但是一个特定的区域会引起头痛。一些地址字段包含街道地址的两个数字。例如,一个单元格可能包含“Mr Smith 10 Rillington Place Exeter Devon”,这很好,因为我的代码将名称street city和County分开。但有些牢房里有“史密斯父子有限公司,萨里郡萨顿大街10号和12号”

我尝试过
.Pattern=“(\d+\d+\[d+&\d+])”
但这与
.Pattern=“(\d+\d+)”


我的VBA宏将“10”和“12”拆分为单独的单元格。在这种情况下,我希望它将“10”和“12”放在一个单元格中。代码还需要满足单个街道编号的要求。任何建议都会有很大帮助。

您可以使用相同的选项,但从
\d+&\d+

您可以省略
\[
,因为它匹配一个文本
[
,并且该字符将首先由不匹配数字的
\D
匹配

如果您的意图是通过不转义第一个方括号来创建,则模式将与
[d+&]
相同

但不会到达,因为所有匹配项都将由匹配数字的
\d
或不匹配数字的
\d
匹配

您可以使用:

(\d+ & \d+|\d+|\D+)

您可以使用相同的选项,但以
\d+&\d+

您可以省略
\[
,因为它匹配一个文本
[
,并且该字符将首先由不匹配数字的
\D
匹配

如果您的意图是通过不转义第一个方括号来创建,则模式将与
[d+&]
相同

但不会到达,因为所有匹配项都将由匹配数字的
\d
或不匹配数字的
\d
匹配

您可以使用:

(\d+ & \d+|\d+|\D+)

第四只鸟哇!太棒了!谢谢。我有很多关于Regex的知识要学习,但是你指给我的网站将来肯定会有帮助,你在这里的解释也很好。第四只鸟哇!太棒了!谢谢你。我有很多关于Regex的知识要学习,但是你指给我的网站将来肯定会有帮助,你的解释也会有帮助这里的离子棒极了。