需要Regex表示逗号,后跟空格,然后是状态缩写

2024-04-23 16:29:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我对regex非常陌生,我正在尝试寻找以下任何一种情况:

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

其中FL可以是任何美国州的缩写,大写或小写。(我知道上面的一些可能重叠。)这就引出了我问题的第二部分: 我该如何编写正则表达式代码来搜索上述所有内容,以及每个美国州的缩写? (为什么要我把问题编辑得更具体一些?当两个帖子都非常相关的时候,发两个帖子又有什么意义呢?如果你愿意,你可以回答一个或两个问题。@第四只鸟)


Tags: 代码编辑内容情况帖子regex意义小写
3条回答
/(?: (?:A[KLRZ]|C[AOT]|D[CE]|FL|GA|HI|I[ADLN]|K[SY]|LA|M[ADEINOST]|N[CDEHJMVY]|O[HKR]|P[AR]|RI|S[CD]|T[NX]|UT|V[AIT]|W[AIVY])(?:,| ))|(?:, (?:A[KLRZ]|C[AOT]|D[CE]|FL|GA|HI|I[ADLN]|K[SY]|LA|M[ADEINOST]|N[CDEHJMVY]|O[HKR]|P[AR]|RI|S[CD]|T[NX]|UT|V[AIT]|W[AIVY])(?:,| ))/i

检查此表达式:

(?<!\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)

Regex Demo

这个表达式很长,所以让我分几个部分来解释:

 (?<!\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标志,它将忽略字母大小写。你知道吗

/,(PA | FL |…)/i

我将剩下的48个州作为练习留给读者;)

相关问题 更多 >