Javaで次のプロパティを持つサブストリングを抽出する正規表現を使用したいと思います。
- サブストリングの先頭は「WWW」で始まります
- 部分文字列の終わりはコロンです':'
次のようなLike句を使用したSQLの経験があります。
Select field1 from A where field2 like '%[A-Z]'
したがって、SQLを使用している場合は、次のようにコーディングします。
like '%WWW%:'
これをJavaで開始するにはどうすればよいですか?
Pattern p = Pattern.compile("WWW.*:");
Matcher m = p.matcher("zxdfefefefWWW837eghdehgfh:djf");
while (m.find()){
System.out.println(m.group());
}
単語文字 および のみに一致させたい場合.
は、正規表現を次のように使用できます。"WWW[\\w.]+:"
Pattern p = Pattern.compile("WWW[\\w.]+:");
Matcher m = p.matcher("WWW.google.com:hello");
System.out.println(m.find()); //prints true
System.out.println(m.group()); // prints WWW.google.com:
任意の文字に一致させたい場合は、正規表現を次のように使用できます。"WWW[\\w\\W]+:"
Pattern p = Pattern.compile("WWW[\\w\\W]+:");
Matcher m = p.matcher("WWW.googgle_$#.com:hello");
System.out.println(m.find());
System.out.println(m.group());
説明:WWW
と:
はリテラルです。\\w
- az AZ 0-9 などの任意の単語文字。\\W
- 単語以外の文字。
部分文字列を使用した別の例を次に示します。
public static void main(String[] args) {
String example = "http://www.google.com:80";
String substring = example.substring(example.indexOf("www"), example.lastIndexOf(":"));
System.out.println(substring);
}
正しく理解していれば
String input = "aWWW:bbbWWWa:WWW:aWWWaaa:WWWa:WWWabc:WWW:";
Pattern p = Pattern.compile("WWW[^(WWW)|^:]*:");
Matcher m = p.matcher(input);
while(m.find()) {
System.out.println(m.group());
}
出力:
WWW: WWWa: WWW: WWWああ: WWWa: WWWabc: WWW: