2016-11-28 3 views
0

正規表現(regex())に基づいて2つの単語(ボール)を抽出しようとしていますが、正規表現ではこれらの単語は見つかりません。手伝って頂けますか?Javaコードのパターンを持つ単語を検索する

import java.util.regex.Matcher; 
import java.util.regex.Pattern; 
public class change1 { 
    private static String[] sentence_to_array; 
    public static void main(String[] args) { 
     String sentence = "The ball is round"; 
     sentence_to_array = sentence.split(" ");   
     Pattern p = null; 
     Matcher m = null; 
     String to_remove = findings(p, m, sentence_to_array, regex()); 
    }//method 
    private static String findings(Pattern p, Matcher m, String[] pieces, String fr) { 
     String word = ""; 
     pieces = sentence_to_array; 
     p = Pattern.compile(fr); 
     for (String piece : pieces) { 
      m = p.matcher(piece); 
      if (m.find()) { 
       word = word.concat(piece + " "); 
      }//if 
     }//for 
     return word; 
    }//method 
    public static String first_regex() { 
     return "(The|or|what)"; 
    }//Method 
    public static String second_regex() { 
     return "(Peter|Luke|Hans|ball)"; 
    }//method 
    public static String regex() {//επιστρέφει το υποκείμενο ως regex 
     return "(" + first_regex() + " " + second_regex() + ")"; 
    }//method 
}//class 
+1

円が丸い参照してください、ボールはボール@yossico球 – yossico

+0

が球体です。すべての球は丸い。したがってボールは丸い。完璧な三位一体論。 – khelwood

+1

あなたは完全な正規表現 '((The |または| what)(Peter | Luke | Hans | ball))'に対して各単語をテストします。それが主な問題です。 –

答えて

0

あなたの主な問題は、完全な正規表現(((The|or|what) (Peter|Luke|Hans|ball)))に対して各単語をテストすることです。文から部分文字列を直接抽出する必要があります。

私は可能な限りあなたのCOSEを維持しようとした:

import java.util.*; 
import java.lang.*; 
import java.io.*; 
import java.util.regex.Matcher; 
import java.util.regex.Pattern; 

class Ideone 
{ 
    private static String[] sentence_to_array; 
    public static void main (String[] args) throws java.lang.Exception 
    { 
     String sentence = "The ball is round"; 
     Pattern p = null; 
     Matcher m = null; 
     System.out.println(findings(p, m, sentence, regex())); 
    } 
    private static List<String> findings(Pattern p, Matcher m, String pieces, String fr) { 
     p = Pattern.compile(fr); 
     m = p.matcher(pieces); 
     List<String> lst = new ArrayList<>(); 
     while (m.find()) { 
      lst.add(m.group()); 
     }//for 
     return lst; 
    }//method 
    public static String first_regex() { 
     return "(The|or|what)"; 
    }//Method 
    public static String second_regex() { 
     return "(Peter|Luke|Hans|ball)"; 
    }//method 
    public static String regex() {//επιστρέφει το υποκείμενο ως regex 
     return "(" + first_regex() + " " + second_regex() + ")"; 
    }//method 
} 

Java demo

関連する問題