gpt4 book ai didi

java - Java 中正则表达式的问题

转载 作者:行者123 更新时间:2023-12-01 19:26:49 25 4
gpt4 key购买 nike

在我当前的项目中,我面临着一个可以用两种模式构造的字符串的问题。它仅由 1 个自然数或 2 个自然数组成,中间有“-”。我需要能够区分它们。我想为此使用以下代码:

if (STRING.matches("*-*"))
{
//Do something
} else {
//Do something else
}

但是,它给了我以下错误:

Exception in thread "Thread-2" java.util.regex.PatternSyntaxException: Dangling meta character '*' near index 0

我还尝试将“#”放在字符串的开头(当然我将其添加到模式中),但这只会导致执行 if-query 的 else 部分。

希望你能帮助我

isi_ko

最佳答案

您的正则表达式不正确,因为星号是一个元字符,前面需要一个模式。你可以尝试这样的事情:

if (STRING.matches("[^-]*-[^-]*"))
{
//Do something
} else {
//Do something else
}

更好的方法可能是使用 String#split("-") 并将其放入数组中。然后,您可以检查该数组的长度以查看其中有多少个数字,然后对每个子字符串使用 Integer.parseInt 来获取自然数。

另一种方法是使用匹配器来查找多个组。如果 (\d)* 是匹配自然数的正则表达式,您可以这样做:

Pattern pattern = Pattern.compile("(\\d)*");
Matcher matcher = pattern.matcher(input);
matcher.find();
String first = matcher.group();
if (matcher.find()) {
String second = matcher.group(); //this means there are two numbers
}

关于java - Java 中正则表达式的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61310812/

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