正则表达式匹配逗号或字符串

Dav*_*vin 1 regex regex-lookarounds

我想将字符匹配到第一个逗号或Esq之后.

Mr. Bob Smith, Esq., Fish Bowl Lane
Mr. Bob Smith, Fish Bowl Lane
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚如何前瞻以产生所需的效果.

[^,]*
Run Code Online (Sandbox Code Playgroud)

我希望收到

Mr. Bob Smith, Esq.
Run Code Online (Sandbox Code Playgroud)

Mr. Bob Smith
Run Code Online (Sandbox Code Playgroud)

分别.

Wik*_*żew 5

看来你想从字符串的开头到第一个逗号得到一个子字符串,然后是一个可选的Esq.子字符串:

^[^,]+(?:,\s*Esq\.)?
Run Code Online (Sandbox Code Playgroud)

请参阅正则表达式演示

细节

  • ^ - 开始一个字符串
  • [^,]+ - 除了之外的一个或多个字符 ,
  • (?:,\s*Esq\.)?- 一个可选的非捕获组(?:如果你的正则表达式引擎不支持非捕获组,只支持捕获组,则删除)匹配1或0次出现的
    • , - 逗号
    • \s* - 0个或更多的空格字符
    • Esq\.- 一个文字Esq.子串.