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

时间:2015-01-22 10:07:26

标签: php regex

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

  • “这是测试卷1”
  • “这是一个测试卷.1”
  • “这是一个测试卷。”
  • “这是测试第1卷”
  • “这是测试第1卷”
  • “这是一个测试,第1卷”
  • “这是一个测试,第1卷”
经过几分钟的捣乱,我几乎得到了它,但是有一个问题。我只需要在它后面有一个数字时匹配,但这个数字可以写成数字(1,2,3)或一个单词(一,二,三)。这些数字可能会相对较高,比如20(二十)等等。显然,如果这张专辑被称为“调高音量”,我希望它将其更改为“调高音量” ,Vol。“。

我该怎么做?

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

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

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

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

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

这仍应转换为:“这是一个测试,第1卷”

1 个答案:

答案 0 :(得分:1)

使用前瞻检查匹配将跟随123或字符串一,二,三。

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

DEMO