gpt4 book ai didi

java - 使用 Java 正则表达式提取和拆分单词

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

我有一个字符串 "'GLO', FLO" 现在,我想要一个 regex 表达式来检查字符串中的每个单词,如果:-word 以单引号开头和结尾,将单引号替换为空格- 如果在单词之间遇到逗号,则使用空格分隔两个单词。

所以,最后,我应该得到 GLO FLO

关于如何在字符串上使用 replaceAll() 方法执行此操作的任何帮助?

这个正则表达式不适合我:"'([^' ]+)|\\s+'"

public static void displaySplitString(final String str) {
String pattern1 = "^'?(\\w+)'?,\\s+(\\w+)$";
StringTokenizer strTok = new StringTokenizer(str, " , ");
while (strTok.hasMoreTokens()) {
String delim = (strTok.nextToken());
delim.replaceAll(pattern1, "$1$2");
System.out.println(delim);
}
} //in main method displaySplitString("'GLO', FLO");

最佳答案

这里是 the snippet那应该让你继续:

public static void displaySplitString(String str)
{
String pattern1 = "^'?(\\w+)'?(?=\\S)";
str = str.replaceAll(pattern1, " $1 ");
StringTokenizer strTok = new StringTokenizer(str, " , ");
while (strTok.hasMoreTokens())
{
String delim = (strTok.nextToken());
System.out.println(delim);
}
}

这里,

  • 我将 str 参数声明更改为非 final(以便我们可以更改方法内的 str 值)
  • 我正在使用第一个正则表达式 ^'?(\\w+)'?(?=\\S) 删除第一个单词周围的潜在单引号
  • 由于您使用了 StringTokenizer,因此 while block 中只需 2 行就足够了。

正则表达式意味着:

  • ^ - 从字符串的开头开始寻找匹配项
  • '? - 匹配 0 或 1 个单引号
  • (\\w+) - 匹配并捕获 1 个或多个字母数字符号(我们将在替换模式中将它们称为 $1)
  • '? - 匹配 0 或 1 个单引号
  • (?=\\S) - 仅当可选单引号后没有空格时匹配。或许,您甚至可以仅用 , 替换此前瞻,前提是您总是在第一个单词之后将它放在那里。

关于java - 使用 Java 正则表达式提取和拆分单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31710895/

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