2013-12-17 95 views
-9

我想打印含有模式_fact”这个词。例如在下面的字符串要打印agg_day_adv_campaign_demand_factJava的正则表达式打印字

String text = 
    "FROM dt_dim AS d, "+ 
    "adj_dim AS adj " + 
    "cam_dim AS cam, " + 
    "agg_day_adv_campaign_demand_fact AS fact "; 
+2

你忘了,错误地张贴你的企图:) – Maroun

+10

我相信你已经按**问**按钮,而不是**请求代码**按钮 – Baby

+0

为了得到建设性的答案,你总是要显示我们试图自己解决您的问题以及预期和收到的输出/错误消息。 –

回答

0
String text = 
       "FROM dt_dim AS d, "+ 
       "adj_dim AS adj " + 
       "cam_dim AS cam, " + 
       "agg_day_adv_campaign_demand_fact AS fact "; 

    Pattern FACT_PAT = Pattern.compile("(\\S+_fact)"); 
    Matcher m = FACT_PAT.matcher(text); 
    if (m.find()){ 
     System.out.println(m.group(1)); 
    } 
+0

谢谢JosefN。上面的代码只打印正则表达式,即_fact。但要求打印完整的单词。 – user3110457

+0

我修好了:),对不起 – JosefN

0

你可以简单地split串入词和检查字一个一个以搜索为你的模式。

3

正则表达式\ W * _fact会做到这一点。 你可以在这里测试这个表达式(http://regexpal.com/

import java.util.regex.Matcher; 
import java.util.regex.Pattern; 

public class Main { 

    public static void main(String[] args) { 
     String text = 
       "FROM dt_dim AS d, "+ 
         "adj_dim AS adj " + 
         "cam_dim AS cam, " + 
         "agg_day_adv_campaign_demand_fact AS fact "; 
     Pattern pattern = Pattern.compile("\\w*_fact"); 
     Matcher matcher = pattern.matcher(text); 
     while (matcher.find()) { 
      System.out.println("Found the text " + matcher.group()+ "starting at " + matcher.start() 
        + " index and ending at index " + matcher.end()); 
      System.out.println(text.substring(matcher.start(), matcher.end())); 
     } 
    } 
}