2009-07-15 10 views
1

私は、このコレクションの中にある型(MovieClip、Sprite、クラスパスで定義されたカスタムクラスと共に)の存在のためのactionscript 3コードの行をチェックするこの作業を行っています。反復される。Java Regexの問題

Custom type: fSceneController 
Contains flash type: Scene 

ので.containsメソッドが正常に動作しません。

for (String type: typeList) { 
    if (input.contains(type)) { 
     // dome something here 
    } 
} 

問題は、カスタムタイプの名前のいくつかは、また別のタイプの名前が含まれている、です。私はパターン内で型をチェックし、その型の直前または直後にa-zA-Z0-9がないことを確認するループ内で正規表現を使うことを考えていました。

Pattern p = Pattern.compile("<stuff here>"+ type + "<more stuff here>"); 

誰も私には型自体がテキストの一部を含むことができ、他のタイプから明瞭に検出できるように、私はタイプの前後に置くべきかを決定するのに役立つことはできますか?

おそらく、私が同じ目標を達成するために使用できる別の方法を提案しますか?私はあなたが何をしようとしての明確なんだけど、私は、これはあなたが正規表現で単語や言葉だけをしたい場合は、

が欠落しているものだと思います

答えて

6

わからないし、\ bを入れます前と後ろに、インスタンス

\bhe\b will only match the first of... 

he 
she 
the 
they 
+0

のように、同様の長さをチェックすることができるかもしれません。正規表現の力は境界を知りません。 –

+1

クール、聞いてうれしそうなことが問題だった。私は\ bが境界を表していると思う。それは句読点を正しく処理します。 –

+0

ちょうどいくつかの文脈を与えるために、私はhaxe翻訳者にactionscript 3を書いています。言語がタイプとインポートを処理するさまざまな方法に、クラス内で使用されているすべての型を検出して、インポート文を拡張できるようにしなければなりません(haxeはワイルドカードのインポートをサポートしません)。したがって、実際に使用されていないものをインポートします。 –

-1

のためにあなたはすごい私はそれは簡単だった信じることができないこの

for(String type : typeList) 
    if(input.contains(type) && input.length() == type.length()) 
     System.out.println("Found " + type); 
+0

は、入力の長さとしては機能しませんが、検索するタイプの長さよりはるかに長くなる可能性があります。全体の問題は、そのタイプが他のテキストの束と混ざり合っており、他のテキストや他の既知のタイプと区別して検出されなければならないということです。 –

+0

ああええ - ちょうど問題のそのビットを完全に読んでください。 –