gpt4 book ai didi

c#正则表达式排除某些字符

转载 作者:行者123 更新时间:2023-11-30 23:19:38 26 4
gpt4 key购买 nike

我正在尝试使用具有以下格式的 Regex.IsMatch 在 C# 中匹配字符串:

([anything here[anything here]anything here])+

示例:[mark[MARK]mark][[spacing]] 将是一个有效字符串,但 [[[spacing]spacing] 将是一个无效字符串.

注意

"anything here"

字符串不能包含

"[" or "]"

,也可以为空。

我尝试了类似@"(\[{1}\w*\[{1}\w*\]{1}\w*\]{1})+",但我不知道如何告诉 Regex 引擎 \w* 不能包含

"[" or "]"

.

谢谢!

最佳答案

您需要使用 balancing groups , 将整个表达式包含在一个非捕获组中,并用 + 量化该组(一次或多次出现):

^(?:\[(?>[^][]+|(?<o>)\[|(?<-o>)])*(?(o)(?!))])+$

参见 regex demo

详细信息:

  • ^ - 字符串开始
  • (?: - 非捕获的开始+ -量化组
    • \[ - 一个 [
    • (?>[^][]+|(?<o>)\[|(?<-o>)])* - 搜索除 [ 以外的任何 1+ 个字符和 ][ (将其添加到组“o”堆栈)或 ] (将其从组“o”堆栈中移除)
    • (?(o)(?!)) - 如果组“o”不为空,则匹配失败,寻找下一个配对 [...]
    • ]
  • )+ - 内部模式的一次或多次出现
  • $ - 字符串结束。

关于c#正则表达式排除某些字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40172063/

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