2012-01-12 9 views
0

私はJavaで正規表現を使用することにあまり慣れていません。私は文字列this/is/a/file!/pathregex in java、特定の文字列パターンを検索しますか?

を持っている場合は は今substringindexOfと私は/!わたってるしき登場する名前のファイルを見つけることができますが、私はこのようなタスクは、正規表現を使用してはるかに簡単でなければならないかなり確信しています。

正規表現を使用した例がありますか?

+0

この問題では、最も簡単で簡単な方法です。文字列の 'file'部分から何かを読んでいないかぎり、正規表現は考えないでください。 – adarshr

+0

Googleはあなたの友人です。 http://adocs.oracle.com/javase/tutorial/essential/regex/ –

+0

@adarshr、ご意見ありがとうございます;) – Johnydep

答えて

-1

Javaでそれらを使用する最も簡単な方法は、String.matches方法を使用することです:

boolean matches = "abc".matches("[a-z]+"); 

trueをもたらすであろう。

これを行う2番目の方法は、特定の正規表現パターンを何度も使用する必要がある場合に便利です。あなたはそれをコンパイルし、それを再利用することができます。これを行う必要があります...そして、あなたは第一グループを見つけるために、整合を使用することができます

Pattern pattern = Pattern.compile("[a-z]+"); 
Matcher matcher = pattern.matcher("abc"); 
boolean matches = matcher.matches(); 
+0

String.matchesは文字列全体にのみ一致します。問題は、パスの一致する部分文字列を抽出することです。 –

0

気にいら.*/([^!]*)!.*として

(括弧の間の部分を、0番目のグループは、全試合です)

私はこのソリューションをテストしませんでした...

0

ここでは、

のMatcherを見てグループや、より複雑な操作

Pattern pattern = Pattern.compile(yourRegex); 
Matcher matcher = pattern.matcher(yourText); 
while(matcher.find()) { 
    System.out.println(matcher.group(1)); 
} 

を使用することができますPatternオブジェクトを正規表現で表現し、それからpaまでのマッチャーオブジェクトを作成するrseあなたの文字列。

String regex = ".*/(.*)!"; 

Pattern p = Pattern.compile (regex); 

Matcher m = p.matcher(StringToBeMatched); 

if (m.find()) { 

    String filename = m.group (1); 
} 
+0

このソリューションはテストしていませんでしたか?コードは正しいですが、正規表現はコンパイルされません。 –

+0

正規表現を修正しました –

関連する問題