0

我在Java正则表达式方面很糟糕,所以我希望你们能帮助我。

String variable = "My life is better ";
String variable2 = "My life01 is better";

现在我必须编写一个代码,如果字符串只有“生命”,它将返回 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);

    }


}
4

4 回答 4

4

使用单词边界\b匹配。

有关详细信息,请参阅 Java模式文档。

请注意,您可能需要将其写入 at\\b以获得正确的转义。模式需要 string \b,当在.java代码中使用时(而不是从文件中读取!)需要以 Java 转义形式编写为"\\blife\\b".

于 2012-11-12T11:51:10.447 回答
3

使用以下正则表达式: -

"\blife\b"

PatternMatcher类。这将匹配完整的单词。(\b表示词边界)

您必须使用Matcher#find方法来检查字符串是否包含此模式。


注意: -如果您想使用String.matches,这在此处比较合适,而不是使用Patternand 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

在第二个正则表达式中,.*匹配字符串 before 和 after life

于 2012-11-12T11:51:30.257 回答
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).*");
  }
}
于 2012-11-12T12:06:55.607 回答
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");
        }
    }
}
于 2015-07-04T17:54:22.693 回答