我需要通过正则表达式删除序数,但我的正则表达式技能非常缺乏.以下是定位序数,但包括返回值之前的数字.我需要隔离并删除序数.
[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或许多其他正则表达式语法之一,你需要查找语法.
在 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)