2017-04-26 15 views
0

構造体に従っているかどうかを検査する文字列があることを確認する方法がある場合は、解決しています。文字列が特定のパターンであることを確認する

例:String s = "abcd, afsfsfs, abcdef, 90> 20, abeds"

'> '、最後に', '続い', '続い', '続い', 'があることを確認する必要があります。文字と数字は、文字を区切る文字の長さが異なる場合があります。

私は少しこれに固執しています。どんな助けもありがとう。

+1

これは正規表現の良い候補のようです。このチュートリアル(https://docs.oracle.com/javase/tutorial/essential/regex/)をお読みになることをお勧めします。それはあなたが何かを思い付くのに役立ちます – jrook

答えて

0

あなたはString#matches()と併せて、以下の正規表現パターンを使用することができます。

.*, .*, .*, .*>.*, .* 

コードサンプル:ここ

public static void main(String args[]) 
{ 
    String s = "abcd, afsfsfs, abcdef, 90> 20, abeds"; 
    if (s.matches(".*, .*, .*, .*>.*, .*")) { 
     System.out.println("match"); 
    } 
    else { 
     System.out.println("no match"); 
    } 
} 

デモ:

Rextester

+0

私はOPが '、'(空白を含む)の3つのインスタンスと一致したいと思う '> ' – jrook

+0

が正しいと思う、私はあまりにもスペースを確認したいと思います。 – Oldmanriver

1

あなたが任意の数の文字を使用する場合は、特殊文字間の数字は、あなたがこの正規表現を使用することができます。

public static void main(String[] args) { 

      String s = "abcd, afsfsfs, abcdef, 90> 20, abeds"; 
      boolean matches = s.matches("\\w+, \\w+, \\w+, \\d+> \\d+, \\w+"); 
      System.out.println(matches); 
} 
+0

'(\\ w +、){3} \\ d +> \\ d +、\\ w +'? –

0

はまだテストされていないbelow.FYI、のようなものを試してみてください。説明、[^,]+と。あなたは,以外のものとマッチしていると言っていて、,と一致します。 2番目のパターンは[^>]+ >>と一致するが、一致するすべての文字は>です。

[]文字クラスや文字否定文字クラスを意味[ ]

^を設定します。 read more

^(?![\s]*$)   [^,]+ , [^,]+ , [^,]+ , [^>]+ > [^,]+ $ 
start no empty  1st   2nd   3rd     4th end 
0

これを試してみてください:

^\s*(?:\s*\w+\s*,\s*){3}\w+\s*>\s*\w+,(?!.*[,>]).*$ 

Regex Demo 1

それは形式はあなたが思っているまさにであることを確認します。残りの文字列にはそれ以上の、または>記号はありません。あなたの意図が発見されているフォーマットに一度文字列の中のより多くの繰り返しを、>許すのであれば正規表現は、このように、それはなっからしかし、あなたは(?!.*[,>])すなわち最後の部分の横を削除することがあります。

^\s*(?:\s*\w+\s*,\s*){3}\w+\s*>\s*\w+,.*$ 

Regex Demo 2

関連する問題