我在Java正则表达式上非常糟糕,所以我希望你们能帮助我。
String variable = "My life is better ";
String variable2 = "My life01 is better";
现在我必须编写一个代码,如果字符串只有“life”
,它将返回true所以我应该只为变量而不是变量2得到TRUE,因为它有生命但是“01”。
〜感谢。
我试过了
if (variable.contains("life")){
System.out.println("TRUE");}
两者都返回TRUE。
见解决方案:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Pattern p = Pattern.compile("\\blife\\b");
Matcher m = p.matcher("life0 is better");
boolean b = m.find();
System.out.println(b);
}
}
答案 0 :(得分:4)
使用字边界\b
匹配。
有关详细信息,请参阅Java Pattern文档。
请注意,您可能需要在\\b
处写一下以获得正确的转义。该模式需要字符串\b
,当在.java
代码中使用时(而不是从文件中读取!)需要以Java转义形式编写为"\\blife\\b"
。
答案 1 :(得分:3)
使用以下正则表达式: -
"\blife\b"
Pattern
和Matcher
类。这将匹配完整的单词。 (\b
表示单词边界)
您必须使用Matcher#find
方法来检查字符串是否包含此模式。
注意: - 如果您想使用String.matches
,而不是使用Pattern
和Matcher
,则必须添加前面.*
和end
。因为,String.matches
匹配整个字符串。
例如: -
String str = "asdf life asdf";
System.out.println(str.matches("\\blife\\b")); // Prints false
System.out.println(str.matches(".*\\blife\\b.*")); // Prints true
在第二个正则表达式中,.*
匹配life
之前和之后的字符串。
答案 2 :(得分:0)
使用String.matches()
方法和正则表达式\b
匹配字边界。
public class StringChecker {
String variable1 = "My life is better ";
String variable2 = "My life01 is better";
System.out.println("variable1: " + containsString(variable1));
System.out.println("variable1: " + containsString(variable2));
//Returns true if the string contains "life"
public boolean containsString(String s){
return s.matches(".*(\\blife\\b).*");
}
}
答案 3 :(得分:0)
package com.rampukar;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class DemoRegx {
public static void main(String[] args) {
String email = "ram@example.com";
String EMAIL_PATTERN = "^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@" + "[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$";
Pattern pt_mail = Pattern.compile(EMAIL_PATTERN);
Matcher mt_mail = pt_mail.matcher(email);
if (mt_mail.matches()) {
System.out.println("Valid");
} else {
System.out.println("In-Valid");
}
System.out.println("---------------------");
String name = "Ram Pukar";
Pattern pt_name = Pattern.compile("[a-zA-Z ]{2,}");
Matcher mt_name = pt_name.matcher(name);
if (mt_name.matches()) {
System.out.println("Valid");
} else {
System.out.println("In-Valid");
}
System.out.println("---------------------");
String user = "ram123";
Pattern pt_user = Pattern.compile("[a-zA-Z0-9]{2,}");
Matcher mt_user = pt_user.matcher(user);
if (mt_user.matches()) {
System.out.println("Valid");
} else {
System.out.println("In-Valid");
}
}
}