gpt4 book ai didi

java - 正则表达式捕获组混淆

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:09:04 24 4
gpt4 key购买 nike

我有以下文字

Jul 31, 2015 - Departure 2 stops Total travel time:20 h 40 m
Aug 26, 2015 - Return 1 stop Total travel time:19 h 0 m Chicago
nonstop

我想获取看起来像“stop(s)”的文本和“nonstop”的所有实例之前的数字,但是我希望两者都在同一个捕获组中。

我写了这个正则表达式(\d)(?:\Wstops?)|(nonstop)

这是我想要的,但如您所见,它由两个捕获组组成(第 1 组用于数字,第 2 组用于“不间断”),这可以通过单个捕获组完成吗?

我的另一个问题,是否可以使用正则表达式直接将“不间断”返回为 0,而不是稍后在代码中处理文本?

这是我的正则表达式的现场演示:regex101

最佳答案

你需要用正lookahead assertion .

Matcher m = Pattern.compile("\\d(?=\Wstops?)|nonstop").matcher(s);
while(m.find())
{
System.out.println(m.group());
}
  • \\d(?=\Wstops?) 仅当其后跟一个非单词字符后又跟字符串 stop 时才匹配所有数字或停止

  • | 或者

  • nonstop 匹配字符串nonstop

关于java - 正则表达式捕获组混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31401599/

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