Regex 正则表达式删除序数

Regex 正则表达式删除序数,regex,Regex,我需要通过正则表达式删除序数,但我的正则表达式技能非常缺乏。下面查找序数,但在返回值中包含前面的数字。我只需要分离并删除序数 [0-9](?:st|nd|rd|th) 尝试负面回顾: (?<=[0-9])(?:st|nd|rd|th) (?您需要使用,以便只匹配前面有[0-9]的st | nd | rd | th,但匹配中不包括[0-9]。即: (?<=[0-9])(?:st|nd|rd|th) (?在perl中: $var =~ s{\b(\d+)(?:st|nd|rd|th

我需要通过正则表达式删除序数,但我的正则表达式技能非常缺乏。下面查找序数,但在返回值中包含前面的数字。我只需要分离并删除序数

[0-9](?:st|nd|rd|th)

尝试负面回顾:

(?<=[0-9])(?:st|nd|rd|th)
(?您需要使用,以便只匹配前面有
[0-9]
st | nd | rd | th
,但匹配中不包括
[0-9]
。即:

(?<=[0-9])(?:st|nd|rd|th)
(?在perl中:

$var =~ s{\b(\d+)(?:st|nd|rd|th)\b}{$1};
在PHP中:

$var = preg_replace('/\\b(\d+)(?:st|nd|rd|th)\\b/', '$1', $var);
在.NET中:

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

我遇到了这个问题,因为我需要用点替换序数,即
1.
2.
4.
等等

以下是此问题的解决方案(在PHP中):

$entry=preg\u replace('/^\d+\./',''$entry);


测试:

如果您还想删除序号后面的数字,您可以使用此选项:

[0-9]+(?:st| st|nd| nd|rd| rd|th| th)
因此,对于给定的文本:“第三个人失踪,但第二个人和第一个人在这里”,您将得到以下输出:
“人不见了,但和在这里”

没有正则表达式标准。你想从perl、javascript、csharp或bash中使用它吗?@raj你忘了Java、Python和Erlangothers@Jarrod只有我自信能回答的语言:)如果你想在概念上有更多的背景(PHP的PCRE函数使用与Perl相同的语法),则略微有点冗长的解释。使用Ruby非常有效。考虑对ReGEXP选项增加不区分大小写,使其匹配<代码>第八十五< /代码>以及<代码>第八十五< /代码>:<代码> /(?)