0

私は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);

    }


}
4

4 に答える 4

4

単語境界\b一致を使用します。

詳細については、Javaパターンのドキュメントを参照してください。

\\b適切なエスケープを取得するには、 at に書き込む必要がある場合があることに注意してください。パターンには string が必要です。コード\bで使用する.java場合 (たとえばファイルから読み取らない場合) は、Java エスケープ形式で として記述する必要があります"\\blife\\b"

于 2012-11-12T11:51:10.447 に答える
3

次の正規表現を使用します: -

"\blife\b"

PatternクラスMatcher。これは完全な単語に一致します。(\b単語境界を示す)

Matcher#find文字列にこのパターンが含まれているかどうかを確認するには、メソッドを使用する必要があります。


注: -String.matchesここで適切なを使用する場合は、 and を使用するPatternよりも前に とMatcherを追加する必要があります。なぜなら、文字列全体にマッチするからです。.*endString.matches

例: -

String str = "asdf life asdf";
System.out.println(str.matches("\\blife\\b"));       // Prints false

System.out.println(str.matches(".*\\blife\\b.*"));  // Prints true

2 番目の正規表現では、.*の前後の文字列に一致します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 に答える