正则表达式删除序数

lcd*_*ces 6 regex

我需要通过正则表达式删除序数,但我的正则表达式技能非常缺乏.以下是定位序数,但包括返回值之前的数字.我需要隔离并删除序数.

[0-9](?:st|nd|rd|th)
Run Code Online (Sandbox Code Playgroud)

joe*_*rdi 15

你需要使用一个向后看断言因此只有st|nd|rd|th前面有一个[0-9]匹配,但[0-9]不包括在比赛中.即:

(?<=[0-9])(?:st|nd|rd|th)
Run Code Online (Sandbox Code Playgroud)

我已经链接到perl兼容语法,但是如果你使用posix,posix扩展,vi或许多其他正则表达式语法之一,你需要查找语法.

  • 与Ruby完美配合。考虑将不区分大小写的内容添加到regexp选项中,以使其与`85th`和`85TH`相匹配:`/(?&lt;= [0-9])(?: st | nd | rd | th)/ i`。 (2认同)

Kin*_*pus 6

在 perl 中:

$var =~ s{\b(\d+)(?:st|nd|rd|th)\b}{$1};
Run Code Online (Sandbox Code Playgroud)

在 PHP 中:

$var = preg_replace('/\\b(\d+)(?:st|nd|rd|th)\\b/', '$1', $var);
Run Code Online (Sandbox Code Playgroud)

在.NET中:

var = Regex.Replace(@"\b(\d+)(?:st|nd|rd|th)\b", "$1");
Run Code Online (Sandbox Code Playgroud)