如何在JAVA中的一行中找到以给定字符串开头的特定单词

时间:2017-09-23 12:47:41

标签: string java-7

输入1:这是新单词搜索引擎的介绍性信息

输入2:在

输出:{introductionctory,information}

1 个答案:

答案 0 :(得分:0)

请确认这是否解决了您的问题:

package q46379748;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class FindWord {

    public static void main( String[ ] args ) {
        String input = "This is introductory information of new word search engine";

        String query = "in";

        String[ ] result = new FindWord( ).findWords( input, query );

        for ( String s : result ) {
            System.out.println( s );
        }
    }

    private String[ ] findWords( String input, String query ) {
        Pattern p = Pattern.compile( "\\b" + query + "\\w*\\b" );

        Matcher m = p.matcher( input );

        List< String > v = new ArrayList<>( );
        while ( m.find( ) ) {
            v.add( m.group( ) );
        }

        return v.toArray( new String[ 0 ] );
    }

}

请注意,此解决方案使用正则表达式(RegEx),创建的模式为\bin\w+\b,其中:

  • \b表示字边界
  • \w表示单词字符
  • *表示前一项的零个或多个(任意数量),在本例中为\w

请记住,最好将查询更改为RegEx查询:

String query = "\\bin\\w*\\b";

Pattern p = Pattern.compile( query );

如果你想学习RegEx,那里有很多材料:

https://regexone.com/

http://www.regular-expressions.info/tutorial.html

http://www.rexegg.com/