用于查找字符串中的数字的正则表达式 - 作为单词或数字


Regular Expression to Find Number in String - As Word OR Number

我需要能够匹配包含"Volume"的音乐专辑名称中的字符串以将其转换为标准格式,因此以下示例将全部变为"这是一个测试,第 1 卷"

  • "这是测试卷 1"
  • "这是一个测试卷。1"
  • "这是测试卷。1"
  • "这是测试第一卷"
  • "这是测试第一卷"
  • "这是一个测试,第 1 卷"
  • "这是一个测试,第 1 卷"

经过几分钟的混乱,我已经差不多了,但是有一个问题。我只需要在后面有一个数字时匹配,但这个数字可以写成一个数字(1,2,3)或一个单词(一,二,三)。这些数字可能会相对较高,例如20(二十)等。显然,如果这张专辑被称为"调高音量",我不希望它把它改成"调高音量,卷"。

我该怎么做?

这是我到目前为止得到的:

/,*'sVol(ume)*'.*'s*/gi

https://www.regex101.com/r/tI8nV7/1'

还有另一种情况增加了更多的复杂性:

  • "这是一个测试(第 1 卷)"

这仍然应该转换为:"这是一个测试,第 1 卷"

使用前瞻检查匹配项后跟 123 或字符串 1、2、3。

,?'h*Vol(?:ume)?'.?'h*(?=(?:[123]|one|two|three)'b)

演示