如何在第n次出现空格和第n次逗号之间匹配字符串

时间:2019-05-31 03:54:41

标签: regex

我正在用PL / SQL编辑。

我有以下字符串

伊利诺伊州芝加哥格兰德大街59号,邮政编码60654

我需要匹配字符串'Chicago',并且可以通过匹配第四个空格字符和第一个逗号字符之间的所有内容来实现。到目前为止,我已经提出了:

(?<=\s)(.*)(?=,)

但是,即使所有内容都匹配逗号,它还是从第一个空格字符开始。我该如何从第四个空格字符开始比赛?

我尝试过(?<=\s){4}(.*)(?=,),但是没有任何匹配。

1 个答案:

答案 0 :(得分:1)

这个表达式会有点复杂。让我们尝试另一种方法,也许专注于两个字母的状态,然后使用类似于以下内容的表达式滑动回到前面的单词:

containerBuilder.RegisterType(servicesList[i]);

Demo 1

我们可以看到,如果纽约市有多个单词,我们将面临问题。但是,如果在城市之前有^.+?(\w+)[,\s]+?[A-Z]{2}.+$ AveBLVD等固定词的列表,我们很可能会提出一个更好的表述,例如:

ST

Demo 2

我们将其扩展为:

^.+Ave\s+(.+?)[,\s]+?[A-Z]{2}.+$

Demo 3

enter image description here

RegEx电路

jex.im可视化正则表达式:

enter image description here

测试

^.+(Ave|Street|ST|BLVD)\s+(.+?)[,\s]+?[A-Z]{2}.+$