正则表达式模式的字符串不是以几个给定的单词开头

时间:2015-09-17 18:07:33

标签: regex

例如:

String s= "Hello every one !! ";

现在我想检查字符串是否以

开头
Hello 
Hi
Hey

然后返回true?

3 个答案:

答案 0 :(得分:1)

您可以在正则表达式中使用Negative Lookahead,如下所示:

这是针对JavaScript的

/^(?!Hello|Hi|Hey).+/gm

将匹配

下面的4和8行
  1. 大家好!
  2. 嗨我的主要奶茶店
  3. 嘿我的主要奶茶店
  4. 也许是我的主要奶茶店
  5. 大家好!
  6. 嗨我的主要奶茶店
  7. 嘿我的主要奶茶店
  8. 也许是我的asdf钥匙奶茶店
  9. ^ - 开始

    (?!) - 从表达式中的当前位置开始,确保给定的模式不匹配。不消耗字符。 在您的情况下,“Hello”或“Hi”或“Hey”表达式 Hello | Hi |嘿表示:匹配字符Hello字面(区分大小写)匹配字符Hi字面意思(区分大小写)匹配字符Hey字面意思(区分大小写)

    。+ - 在一次和无限次之间匹配任何字符(换行符除外),尽可能多次,例如整个

    m 修饰符:多行。导致^和$匹配每一行的开头/结尾(不仅是字符串的开头/结尾)( 如果匹配字符串则不需要

    g 修饰符:全局。所有匹配(首次匹配时不返回)( 如果匹配字符串则不需要

    P.S。你可以使用比特更短的版本

    /^(?!H(ello|i|ey)).+/gm
    

    P.P.S。这些示例也适用于Ruby,Python和PHP

答案 1 :(得分:0)

有意使用正则表达式,它将是:

^(Hello|Hi|Hey)

假设你想要Java(带上面的正则表达式):

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Main {

public static void main(String[] args) {
    System.out.println("If it is case sensitive:\n");

    String[] strings = new String[] {
            "Hello world!", "Hi world!", "Hey world!",
            " Hello world!", " Hi world!", " Hey world!",
            "hello world!", "hi world!", "hey world!" };

    for (String string : strings) {
        Pattern pattern = Pattern.compile("^(Hello|Hi|Hey)");
        Matcher matcher = pattern.matcher(string);

        System.out.println(string + " ==> "
                + (!matcher.find() ? "ok" : "not ok"));
    }

    System.out.println("\nIf it is case insensitive:\n");

    for (String string : strings) {
        Pattern pattern = Pattern.compile("^(Hello|Hi|Hey)",
                Pattern.CASE_INSENSITIVE);
        Matcher matcher = pattern.matcher(string);

        System.out.println(string + " ==> "
                + (!matcher.find() ? "ok" : "not ok"));
    }
}

}

这仅演示了正则表达式模式匹配器如何在Java中工作。

要使其成为返回布尔值的方法,请自行尝试。

答案 2 :(得分:0)

如果字符串不是以您列出的任何单词开头,则以下正则表达式返回true。

\A(?!Hello|Hi|Hey).*?{1}

这种方式的工作原理是

\A - 检查是否'您好'是字符串

的开头

!? - 是一个负面的预测,我认为它在所有正则表达式实现中都受支持

((Hello|Hi|Hey).*?){1} - 匹配由|分隔的单词之一符号

一旦我们找到匹配的字词,我们就会采取负面的预测来实现' 不符合'逻辑。