regex 正则表达式,条件之间的匹配值

hc8w905p  于 2023-03-31  发布在  其他
关注(0)|答案(1)|浏览(130)

我有一个输入,我需要从中提取一个数字。输入可以是以下任何格式。

  • Q29775.3-16-F4
  • A12345-03-C1
  • B09091-03
  • C22221-03D5

在上面的例子中,我需要从输入的中间提取数字03。这个数字是变化的。我试过在正则表达式之间乱转,比如(?<=\-).*?(?=-),但我没有任何进展。有人能建议一个正则表达式模式,它可以提取点或连字符后面的一个或多个数字的第一个出现吗?

mw3dktmi

mw3dktmi1#

你需要使用

var result = Regex.Match(text, @"(?<=[.-])\d+", RegexOptions.ECMAScript)?.Value;

请参见regex demo
图案的意思是

  • (?<=[.-])-一个正向后查找,它匹配一个紧接着前面有.-字符的位置
  • \d+-一个或多个数字。

对于RegexOptions.ECMAScript\d速记字符类只匹配ASCII数字。

相关问题