Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从字符串中删除包含特定单词或部分单词的单词_Java_Regex_String - Fatal编程技术网

Java 从字符串中删除包含特定单词或部分单词的单词

Java 从字符串中删除包含特定单词或部分单词的单词,java,regex,string,Java,Regex,String,我有一个字符串,我想删除其中包含特定单词的特定单词 例如: String str=“Create_DateTime,Hello,DateTime,Before” 每个包含单词“Date”的单词都应该被删除,因此删除后我们将得到以下字符串: 你好,在 我有这个字符串: Expected\u Start\u DateTime,Metrics\u Count,Device\u UID,Command\u Name,Command\u Interval,Start\u DateTime,Instance

我有一个字符串,我想删除其中包含特定单词的特定单词

例如:
String str=“Create_DateTime,Hello,DateTime,Before”
每个包含单词“Date”的单词都应该被删除,因此删除后我们将得到以下字符串:
你好,在

我有这个字符串:
Expected\u Start\u DateTime,Metrics\u Count,Device\u UID,Command\u Name,Command\u Interval,Start\u DateTime,Instance\u UID,Execution\u Date,Metrics\u Size\u KB,End\u DateTime,Tags\u Countfrom Command\u Execution

我成功地删除了所有不需要的单词,因此现在我的字符串如下所示:
、度量值计数、设备UID、命令名、命令间隔、实例UID、度量值大小KB、标记值从命令执行开始计数

我想删除单词前后的“,”

这是我用于执行上述操作的代码:

String str1=str.replaceAll(“\\w*日期\\w*”,”)

原始字符串:
Expected\u Start\u DateTime,Metrics\u Count,Device\u UID,Command\u Name,Command\u Interval,Start\u DateTime,Instance\u UID,Execution\u Date,Metrics\u Size\u KB,End\u DateTime,Tags\u Countfrom Command\u Execution

预期:

Metrics\u Count、Device\u UID、Command\u Name、Command\u Interval、Instance\u UID、Metrics\u Size\u KB、Tags\u Countfrom Command\u execution

实际:
、度量值计数、设备UID、命令名、命令间隔、实例UID、度量值大小KB、从命令执行开始的标记计数似乎您真正想做的是使用数组。(因为您处理的字符串实际上是一组字符串和逗号)。完成所需操作的一种方法是执行str.split(“,”),然后循环检查strArray[i].是否包含(“日期”)。让我知道我是否应该更清楚

似乎您真正想做的是使用阵列。(因为您处理的字符串实际上是一组字符串和逗号)。完成所需操作的一种方法是执行str.split(“,”),然后循环检查strArray[i].是否包含(“日期”)。让我知道我是否应该更清楚

一种方法是使用java流

String str=“预期的开始日期时间、度量值计数、设备UID、命令名称、命令间隔、开始日期时间、实例UID、执行日期、度量值大小KB、结束日期时间、从命令执行开始的标记计数”;
字符串结果=Stream.of(str.split(“,”))
.filter(word->!word.contains(“日期”))
.collect(收集器。连接(“,”);

一种方法是使用java流

String str=“预期的开始日期时间、度量值计数、设备UID、命令名称、命令间隔、开始日期时间、实例UID、执行日期、度量值大小KB、结束日期时间、从命令执行开始的标记计数”;
字符串结果=Stream.of(str.split(“,”))
.filter(word->!word.contains(“日期”))
.collect(收集器。连接(“,”);

如上所述,使用数组和
.split()
的方法可能是一种更好的方法,但是如果您对regex感到好奇,这里有一些方法可以用来实现您的目标

\b\w*?[dD]ate\w*?\b
-选择任何包含“日期”的单词

  • \b
    标记指定单词边界-如果字符不是单词字符(不是
    \w
    ),它将中断,并且还会在字符串的开头和结尾中断,因此它也将捕获字符串中的第一个和最后一个单词
  • \w
    标记指定一个“字”字符:
    a-z
    a-z
    0-9
    。因为你的文字中没有任何奇怪的字符,所以这非常有效
  • *?
    根据需要匹配尽可能多的单词字符,但尽可能少。这确保它捕获“日期”之前的所有字符,但只捕获该单词所需的字符数
  • [dD]ate
    逐字查找单词
    date
    date


^,*|,*$
-这将选择要处理的前导和尾随逗号

  • ^,*
    -将逗号锚定到字符串的前面,并获取尽可能多的逗号
  • |
  • ,*$
    -获取尽可能多的逗号,定位到字符串的后面


,{2,}
-选择2个或多个逗号的所有实例,供您用单个逗号替换

  • 选择一个逗号,只要
  • {2,}
    它们的数量介于2到无限之间,彼此相邻



祝你好运

如上所述,使用数组和
.split()
的方法可能是一种更好的方法,但是如果您对regex感兴趣,这里有一些方法可以用来实现您的目标

\b\w*?[dD]ate\w*?\b
-选择任何包含“日期”的单词

  • \b
    标记指定单词边界-如果字符不是单词字符(不是
    \w
    ),它将中断,并且还会在字符串的开头和结尾中断,因此它也将捕获字符串中的第一个和最后一个单词
  • \w
    标记指定一个“字”字符:
    a-z
    a-z
    0-9
    。因为你的文字中没有任何奇怪的字符,所以这非常有效
  • *?
    根据需要匹配尽可能多的单词字符,但尽可能少。这确保它捕获“日期”之前的所有字符,但只捕获该单词所需的字符数
  • [dD]ate
    逐字查找单词
    date
    date


^,*|,*$
-这将选择要处理的前导和尾随逗号

    <