gpt4 book ai didi

java - Java 正则表达式的问题

转载 作者:行者123 更新时间:2023-11-30 09:10:41 25 4
gpt4 key购买 nike

我似乎无法使用正则表达式获得我想要的文本。

我需要用“...from...to...”分隔的文本

示例输入:

text1 from text2 to text3

我当前的代码:

String[] word=input.split("from|to",3);

System.out.println("Text 1: "+word[0]);
System.out.println("Text 2: "+word[1]);
System.out.println("Text 3: "+word[2]);

例如,如果我想忽略 Text1 中的单词“..from..to..”而只使用“...from..to..”,我可以改进此代码的任何想法,这是最后一次出现(即 text2 和 text3)

例子:

from here to China will take you from 10 to 12 hours.

我想要文字:

  • text1: from here to China will take you as a single sentence
  • 文本 2:10
  • text3:12 小时

最佳答案

这将像您的示例中那样拆分您的短语:

String input = "from here to China will take you from 10 to 12 hours";
System.out.println(Arrays.toString(input.split("\\bfrom\\b\\s+(?=\\d)|\\bto\\b\\s+(?=\\d)")));

在 split 方法中简单地使用 from|to 的问题是您的短语包含多次出现的 fromto。因此,在这种情况下,有必要指定您只需要 fromto 后跟空格和数字。还添加了单词边界 \\b 以仅匹配 to 单词而不匹配包含 to 的单词,例如 toronto


所以你可以像这样调整你的代码:

String[] word=input.split("\\bfrom\\b\\s+(?=\\d)|\\bto\\b\\s+(?=\\d)");

System.out.println("Text 1: "+word[0]);

System.out.println("Text 2: "+word[1]);

System.out.println("Text 3: "+word[2]);

更新:正则表达式实际上可以简化为:

\\b(from|to)\\b\\s+(?=\\d)

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

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