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

5
假设我有以下字符串:猫 I 猫 II 猫 III 狗 I 狗 III 鸟 I 我想匹配所有带有I,但不包括IIIII的字符串。
因此正确的匹配结果应该是:
cat I
dog I
bird I

我认为可以使用正则表达式来匹配一个单独的字符 I,但也许有更直接的方法。

对于这种模式,正则表达式应该是什么?

4个回答

13

试一下这个句子:

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

^ - 字符串开头
(.*[^I]) - 匹配除了字母'I'以外的任何字符 ([^I] 的意思是“不捕获'I'”)
\I - 匹配字面上的'I'字符
$ - 字符串结尾


8

5

试试这个:

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

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

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);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接