3

尽管我阅读了大量关于该主题的帖子(特别是使用环视),但我不明白这种更一般的情况是否可以使用正则表达式来解决。

设置:
1)输入正则表达式传入
2)输入正则表达式嵌入到负正则表达式中,以便 3)输入正则表达式未识别的
任何内容都匹配

例子:

给定:

input regex: "[-//s]";


text: "self-service restaurant"

我想要一个否定的正则表达式来嵌入我的输入正则表达式,以便我可以将我的文本匹配为:

"self", "service", "restaurant"

重要的是,负正则表达式也应该能够匹配一个简单的字符串,如:

"restaurant"

请注意,我想要做的可以实现从更改输入正则表达式

"[-//s]"


"[^-//s]"

然而,我正在寻求一种更通用的方法,其中任何正则表达式都可以传递给负正则表达式。

4

1 回答 1

1

您可以通过匹配或拆分来实现这一点。

  1. 通过匹配。

    String s = "self-service restaurant";
    Matcher m = Pattern.compile("[^-\\s]+").matcher(s);
    while(m.find()) {
        System.out.println(m.group());
    }
    

您需要将模式放在否定字符类中以匹配除否定类中存在的字符之外的所有字符。

  1. 通过拆分。

    String s = "self-service restaurant";
    String parts[] = s.split("[-\\s]+");
    System.out.println(Arrays.toString(parts));
    

这将根据一个或多个空格或连字符来拆分您的输入。稍后您可以加入他们以获得所需的输出。

  1. 通过更换。

    String s = "self-service restaurant";
    System.out.println(s.replaceAll("[-\\s]+", "\\\n"));
    
于 2015-04-11T10:24:04.890 回答