正则表达式匹配字符串中的最后一个字符

时间:2017-08-23 13:26:35

标签: regex

假设我有以下字符串: cat I cat II cat III dog I dog III bird I

我想将所有字符串与I匹配,但不是IIIII

所以正确的匹配会给我:

cat I
dog I
bird I

我想到了匹配I之后没有其他角色,但也许有更直接的方式。

这种模式的正则表达式是什么?

4 个答案:

答案 0 :(得分:4)

您可以使用word boundaries,因此正则表达式可以是这样的:

^.*\bI\b.*$

Regex demo

答案 1 :(得分:4)

试试这句话:

^(.*[^I])\I$

^ - 字符串开头
(.*[^I]) - 匹配'I'以外的任何字符([^I]表示"不要抓住'I'")
\I - 匹配文字'I'
$ - 字符串结尾

答案 2 :(得分:3)

试试这个:

^[a-z|A-Z|0-9]+[^I]\s?I{1}$

我认为这是一个更准确的解决方案。

Try demo

答案 3 :(得分:2)

这是一个可能的解决方案:

^.*\bI\b$

这可以在C#中使用:

Regex regex = new Regex(@"^.*\bI\b$");
var input = new string[]{"cat I","cat II","cat III","dog I","dog III","bird I"};
foreach(string text in input)
{
    if (regex.IsMatch(text))
        Console.WriteLine(text);
}