使用正则表达式提取一些信息

时间:2019-07-19 23:51:09

标签: java regex

如何通过正则表达式从句子中提取一些信息?我想从短语中提取数字和名称。

例如,

buy a $30 giftcard for John
buy John a $30 giftcard

我希望输出是“ 30”和“约翰”

2 个答案:

答案 0 :(得分:0)

此表达式

\$(\d+)|(\b[A-Z]\S+\b)
例如,

提取那些输出。

测试

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

final String regex = "\\$(\\d+)|(\\b[A-Z]\\S+\\b)";
final String string = "buy a $30 giftcard for John\n"
     + "buy John a $30 giftcard";

final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
final Matcher matcher = pattern.matcher(string);

while (matcher.find()) {
    System.out.println("Full match: " + matcher.group(0));
    for (int i = 1; i <= matcher.groupCount(); i++) {
        System.out.println("Group " + i + ": " + matcher.group(i));
    }
}

演示

如果要浏览/简化/修改该表达式,请在this demo的右上角进行解释。

RegEx电路

jex.im可视化正则表达式:

enter image description here

答案 1 :(得分:0)

这是一种方法。它还允许使用 const updateCart = () => { itemToSend.forEach(element => { addToCart(element); }); }; 数组中的其他模式进行扩展。只要您的模式是唯一的,就可以在多个项目上进行匹配,而不必指定模式的所有排列。

Pattern