正则表达式查找字符串但不包含包含相同字符串的某些其他更长的字符串

时间:2015-08-13 13:11:28

标签: regex

我正在寻找一些正则表达式来找到一个字符串,而不是其他几个包含我正在寻找的字符串的长蜇。搜索是针对foo但结果不得包含foo-core,foo core和foogui以及fooi。

正在搜索:

foo-core
foo core
foogui
fooi

结果不得包含:

public static void PrintPyramid(int n)
{
    int i = 1;
    int row = 1;
    int maxNumberInRow = 1;

    int cycles = 0;

    while (row <= n)
    {
        cycles++;

        if (i == maxNumberInRow)
        {
            Console.Write(i);
            Console.Write(" ");
            i++;
        }
        else
        {
            Console.Write(i);
            Console.Write(" ");
            i++;

            Console.Write(i);
            Console.Write(" ");
            i++;
        }

        if (i > maxNumberInRow)
        {
            Console.WriteLine();
            row++;
            maxNumberInRow += row;
        }
    }

    Console.WriteLine();
    Console.WriteLine("Cycles: {0}", cycles);
}

3 个答案:

答案 0 :(得分:3)

  

搜索是针对foo但结果不得包含foo-core,foo core和foogui以及fooi。

以下是可以使用的前瞻性正则表达式:

\bfoo(?![- ]core|(?:gu)?i)\b

请参阅demo

正则表达式匹配:

  • \b - 单词的开头
  • foo - foo,但前提是......
    • [- ] - -或空格或coreguii
  • \b - 确保我们匹配整个单词。

答案 1 :(得分:2)

也许这就是你要找的东西?我认为你的问题应该更具体,并提供更好的例子。

btnIncrement.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent arg0) {
        value1 = value1 + 1;
        lblNewLabel.setText(Integer.toString(value1));
    }
});

Regex101

答案 2 :(得分:0)

结帐regular-expressions.com。这是一个应该帮助你的摘录!

插入符号^匹配字符串中第一个字符前的位置。将^ a应用于abc匹配a。 ^ b根本不匹配abc,因为b在字符串开始之后不能匹配,与^匹配。请参阅下面的正则表达式引擎的内部视图。 同样,$匹配字符串中的最后一个字符。 c $与abc中的c匹配,而$根本不匹配。

如果您特意想要将其他字符串结尾列入黑名单,或者您希望仅使用foo结束字符串,请在问题中添加信息!