4

Excel 数式を含む文字列があります。文字列内から特定の関数名をそれぞれ解析する方法は?

この正規表現の書き方がわかりません。基本的には、単一引用符または二重引用符で囲まれていない ( の前の文字列でなければなりません。

例えば:

  1. =VLOOKUP($A9,'Summary'!$A$10:$C$30,3,FALSE)- 戻るべきVLOOKUP

  2. =IFERROR((C10/B10),"N/A")- 戻る必要がありますIFERROR

  3. ='New Chart Data (Date)'!L70- 関数がないため、何も返さないはずです

  4. =IFERROR((C10/B10),Len(E30))- 戻る必要がIFERRORあり、LEN

  5. ='New Chart Data(Date)'!L70 + Len(5)- 返すべきLenです。これはトリッキーなものです。多くの場合も同様に返さDataれますが、これは間違っています。

何か案は?

前もって感謝します。

4

2 に答える 2

2

このようなものを使用できると思います...

(?<=[=,])[A-Za-z2]+(?=\()

regex101 デモ(正規表現の説明付き)

=IFERROR((C10/B10), Len(E30))実は、落とし穴が 1 つあります。won't getなどの数式ですLen。代わりにこれを使用して、スペースがあればそれを削除できます。

(?<=[=,])\s*[A-Za-z2]+(?=\()

または、C# は可変長の後読みを受け入れるので...

(?<=[=,]\s*)[A-Za-z2]+(?=\()

これは、以前よりも少しリソースが必要だと思います。

=Sheet(2)編集:シート名が次のような形をとることができるという事実については考えていませんでした='=Sheet(2)'!A1

(?<=[=,])\s*[A-Za-z2]+(?=\()(?![^']*'!)

改訂された正規表現101

EDIT2: 演算子も忘れました...唯一の問題は

\b[A-Za-z2]+(?=\()(?![^']*'!)

更新された正規表現101

于 2013-09-04T19:26:42.733 に答える