gpt4 book ai didi

java - 正则表达式期间消耗空间

转载 作者:行者123 更新时间:2023-11-30 07:20:53 25 4
gpt4 key购买 nike

使用正则表达式提取长度为5且前后有空格的单词。因此以下所有单词都应该符合我的模式。但似乎在匹配第一个单词后,空间被消耗,导致第二个单词匹配失败。

为了说明这一点,我应该/想要将打印输出为:

苹果橙松宿舍

相反,我得到:

苹果松

我该如何处理这个问题?

代码:

public static void main(String[] args) {
String myStr = " apple orange pines dorms ";
regexChecker("(\\s[A-Za-z]{5}\\s)", myStr);
}

public static void regexChecker(String regex, String strToCheckOn){

Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(strToCheckOn);

while (m.find()){
if(m.group().length() != 0){
System.out.println(m.group(1));
}
System.out.println();
}
}

最佳答案

您需要使用lookahead和lookbehind而不是在单词之前/之后消耗空格:

(?<=\\s|^)[A-Za-z]{5,}(?=\\s|$)

RegEx Demo

  • (?<=\\s|^)是断言我们在匹配之前有行开头或空格的lookbehind
  • (?=\\s|$)是断言我们在匹配后有行尾或空格的前瞻

关于java - 正则表达式期间消耗空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37601045/

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