gpt4 book ai didi

java - 通过正则表达式从字符串中删除文本

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

在 Java 中,我想通过正则表达式从以下字符串中删除一些文本:

someText

begin
.someMethod()
.doSomething(TOKEN_123)
.someMethod()
end

begin
.someMethod()
.doSomething(TOKEN_456)
.someMethod()
end

begin
.someMethod()
.doSomething(TOKEN_789)
.someMethod()
end

more Text

我想删除包含字符串 TOKEN_456 的第二个开始/结束 block 。

目前我的正则表达式如下所示

begin.*TOKEN_456(.*?)end

但是这个删除了第一个和第二个 block 。

有人可以帮忙吗?

问候

最佳答案

你可以使用

str = str.replaceFirst("(?s)begin(?:(?!begin).)*TOKEN_456.*?end\\s*", ""));

请参阅 IDEONE demo 和 a regex demo

正则表达式匹配:

  • (?s) - 单行修饰符
  • begin - 匹配前导边界,字符序列begin
  • (?:(?!begin).)* - 一个调和的贪婪标记,匹配任何不以 begin 开头的文本
  • TOKEN_456 - 要匹配的文字字符序列
  • .*?end - 尽可能少的任意数量的任意字符,直到最接近的 end
  • \\s* - 0 个或多个空格(用于修剪目的)。

关于java - 通过正则表达式从字符串中删除文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34083659/

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