正则表达句子或问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达句子或问题相关的知识,希望对你有一定的参考价值。

        String regex ="((?:get|what is) number)";
        Pattern pattern = Pattern.compile(regex);       
        String text ="what is the number";
        Matcher matcher = pattern.matcher(text);
        boolean flag= matcher.matches();
        Log.i("===matches or not??","==="+flag);

所以文字可能是“获取数字”,“获取数字”,“数字是什么”,“数字是什么”,“告诉我数字”,“给我号码”

我的代码适用于“get number”和“what is number”,其中“the”是可选的。而且我无法在上面的正则表达式中添加“作为可选字段”

因此,如果我输入“数字是什么”,那么它将返回false。

答案

您可以添加一个带有单词(?:s+the)?的可选组:

String regex ="((?:tell me|g(?:et|ive me)|what(?:\s+i|')s)(?:\s+the)?\s+number)";
Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);       
String text ="what is the number";
Matcher matcher = pattern.matcher(text);
boolean flag= matcher.matches();

Java demo online

图案看起来像

((?:tell me|g(?:et|ive me)|what(?:s+i|')s)(?:s+the)?s+number)
                                           ^^^^^^^^^^^ 

注意我用s+替换空格以匹配任何1+空格字符,并使用Pattern.CASE_INSENSITIVE标志编译正则表达式以启用不区分大小写的匹配。我还添加了替代方案来匹配输入字符串的更多变体。

regex online demo

以上是关于正则表达句子或问题的主要内容,如果未能解决你的问题,请参考以下文章

Python - 用于将文本拆分为句子的正则表达式(句子标记)[重复]

使用正则表达式使用单词“but”来分块句子

如何使用正则表达式在句子内搜索 - 不区分大小写

JavaScript:正则表达式 CamelCase 到句子

有没有一种简单的方法可以在 Oracle 8 上转换句子案例中的字符串?还是我应该使用正则表达式?

匹配大量不同的句子(使用正则表达式模式解析)