Java正規表現で空白以外の文字にマッチさせる方法(\Sの使い方)
Javaの正規表現(RegEx)では、メタ文字「\S」を使用することで、空白以外のすべての文字にマッチさせることができます。
「\S」は空白文字を表す「\s」の否定にあたり、半角スペース・タブ・改行などを除く任意の1文字に一致します。文字クラスで表すと「[^\s]」と同等の意味になります。
サンプルコード
次のプログラムでは、ユーザーが入力した文字列から空白以外の文字をすべて検出し、その個数をカウントして表示します。
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String args[]) {
// ユーザーから文字列を読み込む
System.out.println("文字列を入力してください");
Scanner sc = new Scanner(System.in);
String input = sc.nextLine();
String regex = "\\S";
// 正規表現をコンパイル
Pattern pattern = Pattern.compile(regex);
// Matcherオブジェクトを取得
Matcher matcher = pattern.matcher(input);
int count = 0;
while(matcher.find()) {
count++;
}
System.out.println("空白以外の文字数:" + count);
}
}実行結果
文字列を入力してください Hello how are you welcome to tutorialspoint 空白以外の文字数:37
入力された文字列「Hello how are you welcome to tutorialspoint」は合計43文字ですが、単語間のスペースが6つ含まれるため、空白以外の文字数は37とカウントされます。このように「\S」は、テキストから空白を除いた実質的な文字数を求めたい場合などに便利です。
-
Java正規表現(RegEx)で任意の文字にマッチさせる方法
Javaの正規表現におけるメタ文字「.」(ドット)は、任意の1文字にマッチします。マッチ対象はアルファベットでも数字でも、記号などの特殊文字でも構いません。メタ文字「.」の基本「.」は改行文字以外のあらゆる単一文字と一致するため、パターンの柔軟性を高めたい場面で非常に便利です。なお、ドットそのもの(リテラルの「.」)にマッチさせたい場合は、バックスラッシュでエスケープして「\.」と記述します。例1:任意の1文字とのマッチ次のプログラムでは、ユーザーから入力された文字列に対して正規表現「.」を適用し、文字数をカウントしています。import java.util.Scanner; import j
-
Javaの正規表現を使って文字列からHTMLタグを抽出する方法
Javaのjava.util.regexパッケージには、文字シーケンスの中から特定のパターンを検索するためのさまざまなクラスが用意されています。 このパッケージのPatternクラスは、正規表現をコンパイルした結果を表すクラスです。文字列と正規表現のマッチングを行うために、次の2つのメソッドが提供されています。 compile() − 正規表現を表す文字列を引数として受け取り、Patternクラスのオブジェクトを返します。 matcher() − 対象となる文字列を受け取り、その文字列を現在のPatternオブジェクトが表すパターンと照合するためのMatcherオブジェクトを生成します。