gpt4 book ai didi

java - 匹配直到遇到0或1

转载 作者:行者123 更新时间:2023-12-02 10:39:55 26 4
gpt4 key购买 nike

使用下面的代码,我尝试将字符串“this is a test 1”拆分为一个数组,其中第一个元素包含字符串“this is a test”,第二个元素包含 1

final Pattern mp = Pattern.compile("/.+?(?=0|1)/");
System.out.println(Arrays.asList(mp.split("this is a test 1")[0]));

当我执行此代码时,将显示以下内容:

[this is a test 1]

正则表达式 "/.+?(?=0|1)/" 旨在匹配所有字符串,直到遇到 1 或 0。

如何返回 Array("这是一个测试", 1) ?

更新:

这是否也返回相同的模式:

final Pattern reg = Pattern.compile("/.+?(?=0|1)/");
System.out.println(reg.matcher("this is a test 1").group(0));

它抛出异常:

Exception in thread "main" java.lang.IllegalStateException: No match found
at java.util.regex.Matcher.group(Matcher.java:536)
at First.main(First.java:58)

但是本质上是相同的代码但更短?

最佳答案

您有一个模式,但实际上您需要创建一个 Matcher 来将字符串与您的模式匹配。下面是一个示例:

public static void main(String[] args) {
final String regex = ".+?(?=0|1)";
final String string = "this is a test 1";

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

if (matcher.find()) {
System.out.println(matcher.group(0));
}
}

您似乎想要同时拥有这两个元素,但您当前的正则表达式不允许这样做。尝试使用 (.+?)([0-1]) 这会将这两个元素放入组中。示例:

public static void main(String[] args) {
final String regex = "(.+?)([0-1])";
final String string = "this is a test 1";

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

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

关于java - 匹配直到遇到0或1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52986672/

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