使用相同的特殊字符时使用正则表达式提取

Extract with regex when the same special character is used

我一直在尝试在线使用 Regex 工具,但似乎都不起作用。我很接近但不确定我错过了什么。

这是正文:

Valencia, Los Angeles, California - Map

我想提取状态的前 2 个字母(在“,”和“-”之间),在本例中 "CA"

到目前为止我所做的是:

[,/](.*)[-/]

输出为:

Los Angeles, California

如果有什么我认为我至少会得到状态。

,\s*(\w\w)[^,]*-

将在组 1 中捕获 Ca


,       comma
\s*     whitespace
(\w\w)  capture the first two characters
[^,]*   make sure there's no comma up to the next dash
-

我假设你使用 JavaScript.

您的正则表达式在这种特殊情况下失败,因为您的输入中有两个逗号。

一个可能的修复方法是将中间捕获从 .(任何字符)修改为 [^,](除逗号外的任何字符)。这将强制正则表达式仅匹配 California

所以,试试 [,/]([^,]*)[-/]。这是一个 demo 它是如何工作的。

您可以使用这个正则表达式:

.*?,\s(\w\w)[^,]*-

是您要查找的前两个字母。

,\s*(\S{2})[^,]*-

您只想参加第一场比赛。