.right(4), Saturn).invert()"像这样-6ren">
gpt4 book ai didi

c# - 在点上拆分字符串,但不在圆括号内的点上拆分

转载 作者:行者123 更新时间:2023-12-05 03:34:09 26 4
gpt4 key购买 nike

我想实现上述目标但没有做到。

我已经尝试过正则表达式 "\.(?![^(]*\))"但目前还行不通。

我想拆分字符串 "replace(<<accountname>>.right(4), Saturn).invert()"像这样:

replace(<<accountname>>.right(4), Saturn)
invert()

最佳答案

您可以使用匹配 方法,即匹配平衡括号或除 . 以外的任何字符之间出现的任何一次或多次字符串。 :

var output = Regex.Matches(text, @"(?:\((?>[^()]+|(?<o>)\(|(?<-o>)\))*\)|[^.])+")
.Cast<Match>()
.Select(x => x.Value)
.ToList();

参见 .NET regex demo . 详细信息:

  • (?: - 开始一个“容器”非捕获组:
    • \( - 一个 (字符
    • (?>[^()]+|(?<o>)\(|(?<-o>)\))* - 零次或多次出现(由于 (?>...) 是一个原子组,因此禁止回溯到模式中,这样模式是有效的)
      • [^()]+| - 除 ( 以外的一个或多个字符和 ) , 或
      • (?<o>)\(| - 一个 ( char,并将一个值推送到组“o”捕获堆栈,或者
      • (?<-o>)\) - 一个 ) char,并从“o”组捕获堆栈中弹出一个值
    • \) - 一个 )字符
  • | - 要么
    • [^.] - 除 . 以外的任何字符字符
  • )+ - 小组结束,重复一次或多次。

关于c# - 在点上拆分字符串,但不在圆括号内的点上拆分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70218348/

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