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”匹配