Javaで文字列を操作する際に、正規表現は非常に強力なツールです。しかし、一般的な正規表現の基本を超えて、より高度な操作を行いたい場合にはどうすれば良いでしょうか?
1. 肯定的先読みと否定的先読みの違いは何ですか?
肯定的先読み(positive lookahead)と否定的先読み(negative lookahead)は、正規表現の中で頻繁に使用される概念です。肯定的先読みは、一致する文字列の先に特定のパターンが存在するかを確認し、一致が続く場合にのみマッチします。一方、否定的先読みは、特定のパターンが存在しないことを確認します。以下に具体例を示します。
// 肯定的先読みの例: "apple"の後に"pie"がある場合にマッチ
String pattern1 = "apple(?=pie)";
// 否定的先読みの例: "apple"の後に"pie"がない場合にマッチ
String pattern2 = "apple(?!pie)";
2. Javaで文字列の中から最初のN個の単語を取得する方法は?
特定の文字列から最初のN個の単語を取得するためには、正規表現とString.split()
メソッドを組み合わせて使用できます。
// 最初の3つの単語を取得する例
String input = "This is a sample sentence.";
String[] words = input.split("\\s+"); // 空白文字で分割
// 最初の3つの単語を取得
int N = 3;
String result = String.join(" ", Arrays.copyOfRange(words, 0, Math.min(N, words.length)));
System.out.println(result);
3. Javaで大文字と小文字を区別せずに文字列を比較するには?
文字列を大文字と小文字を区別せずに比較するには、equalsIgnoreCase()
メソッドを使用します。
String str1 = "Java";
String str2 = "java";
// 大文字と小文字を区別せずに比較
boolean isEqual = str1.equalsIgnoreCase(str2);
System.out.println(isEqual); // true
これにより、文字列が同じであればtrue
を返します。
これらのテクニックを駆使することで、より高度な文字列操作が可能になります。