gpt4 book ai didi

java - 使用正则表达式提取 ISBN

转载 作者:搜寻专家 更新时间:2023-11-01 01:01:41 26 4
gpt4 key购买 nike

我有一个非常长的字符串,我想将其解析为出现在子字符串“ISBN”之后的数值。但是,这 13 位数字的分组可以通过“-”字符进行不同的排列。示例:(这些都是有效的 ISBN)123-456-789-123-4,或 1-2-3-4-5-67891234,或 12-34-56-78-91-23-4。本质上,我想在潜在的 ISBN 上使用正则表达式模式匹配器来查看是否存在有效的 13 位 ISBN。我如何“忽略”“-”字符,以便我可以只对 \d{13} 模式进行正则表达式?我的功能:

public String parseISBN (String sourceCode) {
int location = sourceCode.indexOf("ISBN") + 5;
String ISBN = sourceCode.substring(location); //substring after "ISBN" occurs
int i = 0;
while ( ISBN.charAt(i) != ' ' )
i++;
ISBN = ISBN.substring(0, i); //should contain potential ISBN value
Pattern pattern = Pattern.compile("\\d{13}"); //this clearly will find 13 consecutive numbers, but I need it to ignore the "-" character
Matcher matcher = pattern.matcher(ISBN);
if (matcher.find()) return ISBN;
else return null;
}

最佳答案

  • 备选方案 1:

    pattern.matcher(ISBN.replace("-", ""))
  • 备选方案 2:类似于

    Pattern.compile("(\\d-?){13}")

第二种选择的演示:

String ISBN = "ISBN: 123-456-789-112-3, ISBN: 1234567891123";

Pattern pattern = Pattern.compile("(\\d-?){13}");
Matcher matcher = pattern.matcher(ISBN);

while (matcher.find())
System.out.println(matcher.group());

输出:

123-456-789-112-3
1234567891123

关于java - 使用正则表达式提取 ISBN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7113603/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com