0

初投稿なのでお手柔らかに。私の目標は、空白を無視しながら、コンマで区切られた最初の括弧のセット内の文字のグループ (数値の場合を除く) を一致させることでした。トリックは、別の括弧のセットにネストされたコンマと一致しないことでした。私の解決策は機能しているように見えるので、私の解決策を共有し、他のより良い解決策について意見を求めたいと思いました。

私の入力文字列の例は次のとおりです。

test[ [a], b1 ,  1,2 , cc[nn[ 99],oo[ g  , l]],dd].test2[ ee , 22 ]

望ましい一致:

1. "[a]"
2. "b1"
3. "cc[nn[ 99],oo[ g  , l]]"
4. "dd"
5. "ee"

解決:

Regex regexObj = new Regex(
@"(?<=[,\[]\s*)  (?# Match must start with, but not include, opening bracket or comma)
  (?![0-9])      (?# Do not match if followed by a number)
  (?>            (?# Start atomic group, do not backtrack inside the match)
   (?(DEPTH)     (?#  Check IF inside an un-closed bracket group THEN)
    [^\[\]]      (?#   match any char except brackets)
   |             (?#  ELSE closed)
    [^\s,\[\]])  (?#   delimit by comma)
  |              (?# OR)
   (?'DEPTH'\[)  (?#  Match open bracket and increase DEPTH count)
  |              (?# OR)
   (?'-DEPTH'\]) (?#  Match closed bracket and decrease DEPTH count)
  )*             (?# Continue atomic group)
 (?(DEPTH)(?!))  (?# Ensure the match has a balanced set of brackets)
 (?=\s*[,\]])    (?# Match must end with a comma or closing bracket)",
RegexOptions.IgnorePatternWhitespace);

私が取り組んだ例はここにありますC# Regex - 文字列から複数のペアの括弧を削除する方法

4

0 に答える 0