Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 带[a-zA-Z]{0,2}的正则表达式_Java_Regex - Fatal编程技术网

Java 带[a-zA-Z]{0,2}的正则表达式

Java 带[a-zA-Z]{0,2}的正则表达式,java,regex,Java,Regex,我试图构建一个正则表达式,但它没有给我正确的值 书籍应与以下内容匹配: Books Bookss Booksss i、 e字符串可以与一个更少或更多或相等的字符匹配 我尝试为上述情况构建正则表达式,但它不匹配 我尝试的正则表达式是: String str="Books" Pattern p=Pattern.compile(str.substring(0,input.length()-1)+"[a-zA-Z]{0,2}" Matcher matcher = p.matcher(str);

我试图构建一个正则表达式,但它没有给我正确的值

书籍
应与以下内容匹配:

Books
Bookss
Booksss
i、 e字符串可以与一个更少或更多或相等的字符匹配

我尝试为上述情况构建正则表达式,但它不匹配

我尝试的正则表达式是:

String str="Books"

Pattern p=Pattern.compile(str.substring(0,input.length()-1)+"[a-zA-Z]{0,2}"

Matcher matcher = p.matcher(str);

if (matcher.find())
{
    System.out.println("Found");
}   

您可以使用正则表达式(如

/Book.?.?.?\b/
例如:

String str="Books"

Pattern p=Pattern.compile(str.substring(0,input.length()-1)+".?.?.?\b";

Matcher matcher = p.matcher(str);

if (matcher.find())
{
    System.out.println("Found");
}   
表情

.?
匹配任何字符的零个或一个实例,而

\b
将其限制在一个词的边界内。(如果字符串输入中有多个空格,请禁用此选项)

所以

将匹配它们附加到的单词末尾的任意三个字符


编辑:缺少处理一个或多个字符的要求。

您可以使用正则表达式(如

/Book.?.?.?\b/
例如:

String str="Books"

Pattern p=Pattern.compile(str.substring(0,input.length()-1)+".?.?.?\b";

Matcher matcher = p.matcher(str);

if (matcher.find())
{
    System.out.println("Found");
}   
表情

.?
匹配任何字符的零个或一个实例,而

\b
将其限制在一个词的边界内。(如果字符串输入中有多个空格,请禁用此选项)

所以

将匹配它们附加到的单词末尾的任意三个字符

编辑:缺少处理少一个或多个字符的要求。

请尝试以下操作

示例代码

 String str="Booksss";

    Pattern p=Pattern.compile(str.substring(0,str.length()-1)+".?{0,2}");
    System.out.println(p);

    Matcher matcher = p.matcher(str);

if (matcher.find())
{
    System.out.println("Found");
}
  }
}
希望它能对你有所帮助。

试试下面的一个

示例代码

 String str="Booksss";

    Pattern p=Pattern.compile(str.substring(0,str.length()-1)+".?{0,2}");
    System.out.println(p);

    Matcher matcher = p.matcher(str);

if (matcher.find())
{
    System.out.println("Found");
}
  }
}

希望它能帮助你。

我找到了解决办法。谢谢大家的回答

String input="Book.s";

Pattern p=Pattern.compile(input.substring(0,input.length()-1)+"[a-zA-Z]{0,2}$");
Matcher matcher = p.matcher("Books");
if (matcher.find())
{
   System.out.println("Matches Regular Expression");
}       

我找到了解决办法。谢谢大家的回答

String input="Book.s";

Pattern p=Pattern.compile(input.substring(0,input.length()-1)+"[a-zA-Z]{0,2}$");
Matcher matcher = p.matcher("Books");
if (matcher.find())
{
   System.out.println("Matches Regular Expression");
}       

看起来您只需要将
*
附加到
str
。但是
Pattern.quote
it:
Pattern.compile(Pattern.quote(str)+“*”)是个好主意。但是,您在问题中编写了
书籍
,代码中有
书籍
。真正的输入和规则是什么?顺便说一句,请参阅。
*
使前面的原子可选,使其匹配0次或更多次。我想这就是你想要的,对吧?例如:输入是Boo?s,因为这个输出可以是以下1中的任何一个。图书/booa2。书。books/Bookaa,因此我构建了一本正则表达式书。[a-z]{0,2}结果集的边缘对我来说有些不清楚。例如,哪些单词应该与输入字符串相匹配。Books/Booka(比“Booksq”少一个字符)2。Booksq/Booksa(等长)3。Booksqq/Booksqa(比输入字符串多一个字符)看起来您只需要将
*
附加到
str
中。但是
Pattern.quote
it:
Pattern.compile(Pattern.quote(str)+“*”)是个好主意。但是,您在问题中编写了
书籍
,代码中有
书籍
。真正的输入和规则是什么?顺便说一句,请参阅。
*
使前面的原子可选,使其匹配0次或更多次。我想这就是你想要的,对吧?例如:输入是Boo?s,因为这个输出可以是以下1中的任何一个。图书/booa2。书。books/Bookaa,因此我构建了一本正则表达式书。[a-z]{0,2}结果集的边缘对我来说有些不清楚。例如,哪些单词应该与输入字符串相匹配。Books/Booka(比“Booksq”少一个字符)2。Booksq/Booksa(等长)3。Booksqq/Booksqa(比输入字符串多一个字符)我想他希望他们输入的任何单词都使用它。。。根据上面的代码。。。我只是以他的“书”为例。他可以很容易地把str改成他想要的任何单词。我想他想他们输入的任何单词都需要它。它对任何单词都有效。。。根据上面的代码。。。我只是以他的“书”为例。他可以轻松地将str更改为他想要的任何内容。但这也与
中的
Boo
相匹配请检查,它不应与“Boo”匹配,但它也与
Boo
匹配,如
…p.matcher(“Boo”)请检查,它不应与“Boo”匹配