正则表达式在最后一个连字符和空格之后提取字符串
Regex extracting string after last hyphen and spaces
需要使用哪个正则表达式从字符串中提取 'Manchester City'。
字符串是:
Aston Villa - Manchester City
我尝试了 -(.*)\w|-(.)
,但它抓住了 -
。
最简单的是[代码]。 *- (. *) [/code] 并且您的数据在 $1 或 \1 或其他取决于您的工具的东西中。假设数据的格式为 xxxxx-xxxxxx
另一个简单的选项是 - (.*)
请参阅:https://regex101.com/r/fY3oE7/1。使用您的语言中的第一个捕获组来获取破折号后的部分。
请注意,-(.*)\w|-(.)
匹配 -
,因为这里的两个备选方案都以匹配连字符开头。您通常可以通过环顾四周来检查是否存在某些东西。
但是,在这种情况下,我建议
-\s*\K[^-]+$
由于您只需要匹配最后一个 -
之后的子字符串并删除空格,因此您需要像负无限宽度后视 (?<=-\s*)
这样的东西。但是,在 PCRE 中,不支持无限宽度的 lookbehind。相反,有一个 \K
运算符可以使引擎忽略到目前为止被当前模式捕获的整个匹配项。
看到一个regex demo
细分:
-
- 文字连字符
\s*
- 零个或多个空白字符
\K
- 重置(清空)所有当前保留的匹配缓冲区的运算符
[^-]+
- 除 -
之外的一个或多个字符,最多 ...
$
- 字符串结尾。
需要使用哪个正则表达式从字符串中提取 'Manchester City'。 字符串是:
Aston Villa - Manchester City
我尝试了 -(.*)\w|-(.)
,但它抓住了 -
。
最简单的是[代码]。 *- (. *) [/code] 并且您的数据在 $1 或 \1 或其他取决于您的工具的东西中。假设数据的格式为 xxxxx-xxxxxx
另一个简单的选项是 - (.*)
请参阅:https://regex101.com/r/fY3oE7/1。使用您的语言中的第一个捕获组来获取破折号后的部分。
请注意,-(.*)\w|-(.)
匹配 -
,因为这里的两个备选方案都以匹配连字符开头。您通常可以通过环顾四周来检查是否存在某些东西。
但是,在这种情况下,我建议
-\s*\K[^-]+$
由于您只需要匹配最后一个 -
之后的子字符串并删除空格,因此您需要像负无限宽度后视 (?<=-\s*)
这样的东西。但是,在 PCRE 中,不支持无限宽度的 lookbehind。相反,有一个 \K
运算符可以使引擎忽略到目前为止被当前模式捕获的整个匹配项。
看到一个regex demo
细分:
-
- 文字连字符\s*
- 零个或多个空白字符\K
- 重置(清空)所有当前保留的匹配缓冲区的运算符[^-]+
- 除-
之外的一个或多个字符,最多 ...$
- 字符串结尾。