如何使用Pattern matcher只获得与Java中的正则表达式匹配的第一行?

时间:2016-09-27 02:06:35

标签: java regex pattern-matching

假设我在一个文本文件中有一个足球俱乐部名称列表,每行有一个名字。

Arsenal
Manchester United
Chelsea
Liverpool
...
...
Manchester City
Real Madrid

假设我需要找到以" Manchester"开头的行,我在正则表达式下面。

Pattern clubman = Pattern.compile("Manchester.*");
Matcher matche = clubman.matcher(fileString);
        if (matche.find()) {

            System.out.println("Manchester club is :"
                    + matche.group(0));
        }

但是我只需匹配匹配正则表达式的第一行,即Manchester United。 但Pattern.compile正在寻找最后一场比赛,即Manchester City

如何只获得与正则表达式匹配的第一行?

2 个答案:

答案 0 :(得分:1)

不要使用正则表达式。没有理由,这只会让你的问题变得更难。只需遍历文件中的每一行,然后执行类似

的操作
            // -------------- Defining BrandsOfCategories Entity --------------- //

        modelBuilder.Entity<BrandCategory>()
            .HasKey(input => new { input.BrandId, input.CatId })
            .HasName("BrandsOfCategories_CompositeKey");

        modelBuilder.Entity<BrandCategory>()
            .Property(input => input.DeletedAt)
            .IsRequired(false);

        // -------------- Defining BrandsOfCategories Entity --------------- //

   public class BrandCategory
{
    public int CatId { get; set; }
    public int BrandId { get; set; }
    public DateTime? DeletedAt { get; set; }
    public Category Category { get; set; }
    public Brands Brand { get; set; }
}

答案 1 :(得分:0)

要检查是否应该使用匹配项 groupCount()
您正在使用找到下一个匹配项的find(),因此程序将打印第二个匹配项。