正则表达式:匹配第一个破折号后的所有内容

Nic*_*e.P 1 regex

我有一个字符串,其中包含汽车的注册号码,例如

1FX9JE - 2012 Audi A3 Ambition Sportback MY12 Stronic
Run Code Online (Sandbox Code Playgroud)

我想匹配除注册号码之外的所有内容,以及破折号之后的任何内容。

我想出的正则表达式是(php)

\s.[^-]*$
Run Code Online (Sandbox Code Playgroud)

我提出的初始正则表达式仅当字符串仅包含 1 个破折号时才可以匹配破折号后的任何内容。例如https://regex101.com/r/Jao8W0/1

但是,如果字符串有超过 1 个破折号。正则表达式不可用。例如: https: //regex101.com/r/Jao8W0/2

无论如何,我是否可以匹配第一个破折号之后的任何内容,即使字符串在第一个破折号之后包含额外的破折号。

谢谢

Pot*_*toツ 6

试试这个正则表达式:

^[^-\r\n]+-\s*\K.*$
Run Code Online (Sandbox Code Playgroud)

点击查看演示

解释:

  • ^- 断言字符串的开头
  • [^-\r\n]+- 匹配 1+ 次出现的既不是换行符-也不是换行符的任何字符
  • -\s*-- 匹配字符串中的第一个,后跟 0+ 空格
  • \K- 忘记到目前为止匹配的所有内容
  • .*- 匹配任何字符出现 0 次以上
  • $- 断言字符串的结尾