c# 正则表达式,匹配方括号中的字符串

时间:2023-01-03 13:12:33
如何使用正则表达式取出中括号中的字符串,比如:[A[B[C]]],,如何取得最外面[]中的字符串 ,最后结果为"A[B[C]]"字符串。

8 个解决方案

#1


(?i)(?<=\[)(.*)(?=\])

#2


引用 1 楼 chinajiyong 的回复:
(?i)(?<=\[)(.*)(?=\])


            string input1 = @"[A[B[C]]]";
            string pattern = @"(?i)(?<=\[)(.*)(?=\])";
            string replacement = ".";
            Regex rgx = new Regex(pattern);
            string mvalue = rgx.Match(input1).Value;//A[B[C]]

#3


我试了下,楼上方法可以使用。
请帮我看看
"[
   [
       [4,意大利甲组联赛,0],
       [
          [962845,'卡利亚里','切辛线] ,
          [0,1,0,1],
          [0,0,1,32,45] 
      ],
      [0,
          [
            [9944097,1,40000.00],
            [9,10850876,'1.81','0.45','1.50']
          ]
      ]
  ]
   [
       [4,西班牙甲组联赛,0],
       [
          [962845,'卡利亚里','切辛线] ,
          [0,1,0,1],
          [0,0,1,32,45] 
      ],
      [0,
          [
            [9944097,1,40000.00],
            [9,10850876,'1.81','0.45','1.50']
          ]
      ]
  ]
]      
"
这个数据字符串, 如何使用正则表达式获得去除最外层[]的数据

#4


问下 string pattern = @"(?i)(?<=\[)(.*)(?=\])";中的(?i)是什么意思?

#5


引用 4 楼 nevermorewish 的回复:
问下 string pattern = @"(?i)(?<=\[)(.*)(?=\])";中的(?i)是什么意思?

(?i)不区分大小写,
要替换吗?直接取出来不就行了,正则改成
string pattern = @"(?is)(?<=\[)(.*)(?=\])";//(?is)表示不区分大小写,单行模式

#6


引用 5 楼 chinajiyong 的回复:
引用 4 楼 nevermorewish 的回复:

问下 string pattern = @"(?i)(?<=\[)(.*)(?=\])";中的(?i)是什么意思?

(?i)不区分大小写,
要替换吗?直接取出来不就行了,正则改成
string pattern = @"(?is)(?<=\[)(.*)(?=\])";//(?is)表示不区分大小写,单行模式

替换

             string srw="你的字符串";
            string pattern = @"(?is)(\[)?(.*)(\])";
            string replacement = "$2";
            
            Regex rgx = new Regex(pattern);
            string mystring = rgx.Replace(srw, replacement);

#7



@"\[\w[\w[\w]]+\]"

#8


引用 7 楼 laichunlin 的回复:
@"\[\w[\w[\w]]+\]"



这个吧

#1


(?i)(?<=\[)(.*)(?=\])

#2


引用 1 楼 chinajiyong 的回复:
(?i)(?<=\[)(.*)(?=\])


            string input1 = @"[A[B[C]]]";
            string pattern = @"(?i)(?<=\[)(.*)(?=\])";
            string replacement = ".";
            Regex rgx = new Regex(pattern);
            string mvalue = rgx.Match(input1).Value;//A[B[C]]

#3


我试了下,楼上方法可以使用。
请帮我看看
"[
   [
       [4,意大利甲组联赛,0],
       [
          [962845,'卡利亚里','切辛线] ,
          [0,1,0,1],
          [0,0,1,32,45] 
      ],
      [0,
          [
            [9944097,1,40000.00],
            [9,10850876,'1.81','0.45','1.50']
          ]
      ]
  ]
   [
       [4,西班牙甲组联赛,0],
       [
          [962845,'卡利亚里','切辛线] ,
          [0,1,0,1],
          [0,0,1,32,45] 
      ],
      [0,
          [
            [9944097,1,40000.00],
            [9,10850876,'1.81','0.45','1.50']
          ]
      ]
  ]
]      
"
这个数据字符串, 如何使用正则表达式获得去除最外层[]的数据

#4


问下 string pattern = @"(?i)(?<=\[)(.*)(?=\])";中的(?i)是什么意思?

#5


引用 4 楼 nevermorewish 的回复:
问下 string pattern = @"(?i)(?<=\[)(.*)(?=\])";中的(?i)是什么意思?

(?i)不区分大小写,
要替换吗?直接取出来不就行了,正则改成
string pattern = @"(?is)(?<=\[)(.*)(?=\])";//(?is)表示不区分大小写,单行模式

#6


引用 5 楼 chinajiyong 的回复:
引用 4 楼 nevermorewish 的回复:

问下 string pattern = @"(?i)(?<=\[)(.*)(?=\])";中的(?i)是什么意思?

(?i)不区分大小写,
要替换吗?直接取出来不就行了,正则改成
string pattern = @"(?is)(?<=\[)(.*)(?=\])";//(?is)表示不区分大小写,单行模式

替换

             string srw="你的字符串";
            string pattern = @"(?is)(\[)?(.*)(\])";
            string replacement = "$2";
            
            Regex rgx = new Regex(pattern);
            string mystring = rgx.Replace(srw, replacement);

#7



@"\[\w[\w[\w]]+\]"

#8


引用 7 楼 laichunlin 的回复:
@"\[\w[\w[\w]]+\]"



这个吧