首页 > 解决方案 > 需要逗号的正则表达式,后跟空格,然后是州缩写

问题描述

我对正则表达式很陌生,我正在尝试查找以下任何实例:

", FL,"
" FL "
" FL,"
", FL "

其中 FL 可以是任何美国州的缩写,大写或小写。(我知道上面的一些可能重叠。)这导致我的问题的第二部分:我如何编写搜索所有上述内容以及每个美国州缩写的正则表达式代码?(为什么要求我将问题编辑得更具体?当两个帖子彼此非常相关时,发布两个帖子有什么意义?如果愿意,您可以回答一个或两个问题。@The Fourth Bird)

标签: pythonregexpython-3.x

解决方案


检查这个表达式:

(?<!\w)(?:,\s+)?(?:A[LKZR]|C[AOT]|DE|FL|GA|HI|I[ADLN]|K[SY]|LA|M[EDAINSOT]|N[EVHJMYCD]|O[HKR]|PA|RI|S[CD]|T[NX]|UT|V[AT]|W[AIVY]),?\s?(?!\w)

正则表达式演示

这个表达式比较长,我分部分解释:

 (?<!\w)           # Make sure state not preceeded by text
 (?:,\s+)?         # Optionally match if followed by a , and several whitespace
 (?:A[LKZR]        # Start matching every combination of US state. Use -i flag to ignore case.
 |
  C[AOT]           # E.g. this will match CA/CO/CT
 |                 # or
  DE               # DE
 |                 # or
  FL               # etc...
 |
  GA
 |
  HI
 |
  I[ADLN]
 |
  K[SY]
 |
  LA
 |
  M[EDAINSOT]
 |
  N[EVHJMYCD]
 |
  O[HKR]
 |
  PA
 |
  RI
 |
  S[CD]
 |
  T[NX]
 |
  UT
 |
  V[AT]
 |
  W[AIVY])
 ,?               # Match if , at the end
 \s?              # Match if whitespace at the end (was in your examples)
 (?!\w)           # Make sure state is not succeeded by letters

不要忘记设置-i标志,它将忽略字母大小写。


推荐阅读