不知道怎么更正确地问,所以会尽我所能。
我们正在搜索一个示例字符串,另一个模式字符串:
我需要一些方法来弄清楚示例是否包含模式(我想到的是像example.indexOf(pattern)> - 1)
Pattern = "b*b"
Example = "gjsdng" - false;
Example = "bob" - true;
Example = "bab" - true;
Example = "gdfgbUbfg" - true;
答案 0 :(得分:5)
您可以使用String#matches(regex)方法和.*?b.b.*
正则表达式匹配文字。
System.out.println("gjsdng".matches(".*?b.b.*")); //false
System.out.println("bob".matches(".*?b.b.*")); //true
System.out.println("bab".matches(".*?b.b.*")); //true
System.out.println("gdfgbUbfg".matches(".*?b.b.*")); // true
模式说明:
.*? any character except \n (0 or more times
(matching the least amount possible))
b 'b'
. any character except \n
b 'b'
.* any character except \n (0 or more times
(matching the most amount possible))
答案 1 :(得分:0)
.*b[A-Za-z]b.*
是您正在寻找的正则表达式模式。
b
字母b
在字符1的格式[A-Za-z]
模式 b
字母b
位于模式
System.out.println("bobby".matches(".*b[A-Za-z]b.*")); // true
System.out.println("gjsdng".matches(".*b[A-Za-z]b.*")); // false
System.out.println("bob".matches(".*b[A-Za-z]b.*")); // true
System.out.println("bab".matches(".*b[A-Za-z]b.*")); // true
System.out.println("gdfgbUbfg".matches(".*b[A-Za-z]b.*")); // true
http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html
答案 2 :(得分:0)
Brrrrr。
绝对不需要多次创建Pattern
。只需编译一次:
Pattern pattern = Pattern.compile( "b.b" );
此外,不需要匹配整个String。只是找到一个搜索过的String。所以这就是你要找的东西:
assertFalse( pattern.matcher( "Gollum" ).find() );
assertTrue( pattern.matcher( "bob" ).find() );
assertTrue( pattern.matcher( "babe" ).find() );
assertTrue( pattern.matcher( "Alibaba" ).find() );