gpt4 book ai didi

java - 正则表达式匹配两个随机字符串之间的可选字符串

转载 作者:行者123 更新时间:2023-12-05 08:13:26 25 4
gpt4 key购买 nike

我正在寻找一种方法来匹配以下字符串中的可选 ABC。无论是否存在 ABC,两个字符串都应该匹配:

precedingstringwithundefinedlenghtABCsubsequentstringwithundefinedlength前一个字符串未定义长度后一个字符串未定义长度

我试过了

.*(ABC).*

这对可选的 ABC 不起作用,但使 ABC 非贪婪也不起作用,因为 .* 将全部使用骄傲:

.*(ABC)?.*

这不是例如Regex Match all characters between two strings因为我正在寻找两个随机字符串之间的特定字符串,有点相反。

最佳答案

你可以使用

.*(ABC).*|.*

它是这样工作的:

  • .*(ABC).* 模式首先被搜索,因为它是交替的最左边部分(参见 "Remember That The Regex Engine Is Eager" ),它会查找除行以外的任何零个或多个字符尽可能多地打断字符,然后将 ABC 捕获到第 1 组中,然后将行的其余部分与右侧的 .*
  • 匹配
  • | - 或者
  • .* - 如果第一个交替部分不匹配则搜索。

无需使用交替的另一种解决方案:

^(?:.*(ABC))?.*

参见 this regex demo . 详细信息:

  • ^ - 字符串的开始
  • (?:.*(ABC))? - 一个可选的非捕获组,它匹配除换行符之外的零个或多个字符尽可能多,然后捕获到第 1 组 ABC 字符序列
  • .* - 尽可能多的除换行符以外的零个或多个字符。

关于java - 正则表达式匹配两个随机字符串之间的可选字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73728231/

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