Java从作业描述中提取文本(Regex OR Pattern)

时间:2014-06-07 09:33:56

标签: java regex pattern-matching

在我的文字中会有以下内容:

2 years of experiences of databse, XXXBBXBXB 3 years databse and sql experiences, 
UUYFS 3 year experiences, 4 yeears databse contract, 5 years contract

我想要的是在模式之前找到模式并得到单个数字:

1: years of experience
2: year of experiences
...

将会出现一些文字将在“'年”之间出现的情况。和经历'。它可能会出现在' years'或者'年' OR'年经历'等等。

但最终输出将如下所示:(不包括其他模式的数字,例如'年合约'等等)

2, 3, 3

我尝试了类似' \ years \ experience'的内容,但似乎是错误的。

有任何帮助吗?感谢

2 个答案:

答案 0 :(得分:2)

尝试使用以下正则表达式

(\d+)\s+(year|years)

enter image description here

使用Matcher#group()获取第1组的数字,查找括号()中的组。

详细了解Java Regex Pattern

DEMO

示例代码:

String url = "2 years of experiences of databse, XXXBBXBXB 3 years databse and sql experiences, UUYFS 3 year experiences";
Pattern pattern = Pattern.compile("(\\d+)\\s+(year|years)");
Matcher matcher = pattern.matcher(url);

while (matcher.find()) {
    System.out.println(matcher.group(1));
}

输出:

2
3
3

编辑:

根据您的评论尝试以下模式:

(\d+)\s+(years of experience|year experience)

答案 1 :(得分:1)

我认为你正在寻找这样的东西:

(\d+)\s+years?\s+.*?\s+experience