web-dev-qa-db-ja.com

関数でキャプチャグループを使用するにはどうすればよいですか?

=REGEXREPLACE("string", "(ng)", UPPER("$1"))

上記は「string」を返しますが、「striNG」を返す必要があります。

これは、UPPERが、キャプチャされたグループが置換された文字列ではなく、文字列 "$ 1"を大文字にしているためだと思われます。

REGEXREPLACEで期待される結果を出力するにはどうすればよいですか?

1
snazzybouche

これを2つの部分に分割して、後者を上部として返すことができます。 Gsheetsで正規表現内に上部をネストする方法がわかりません。

=REGEXEXTRACT(A1,"stri") & upper(REGEXEXTRACT(A1, "(ng)"))

これは私のために戻ってきました:

文字列> striNG

3
Datanovice

実際のデータに大きく依存しますが、これらはstringに対しても機能します

=REGEXREPLACE("stri"&UPPER("ng"); "(ng)"; "$1")

=REGEXREPLACE("string";"(n)";"")&
 UPPER(REGEXREPLACE("string";"([a-z]{4})";"")

=LEFT(REGEXREPLACE("string";"(w)";"$1");4)&
 UPPER(RIGHT(REGEXREPLACE("string";"(w)";"$1");2))

すべての戻り値:striNG

2
user0

これは、Wordngまたはその他のWordでNGstringに置き換えますngで構成

=REGEXEXTRACT(REGEXREPLACE("string"; "(ng)"; "NG"); "[a-zA-Z]{1,}")

この式は同じことをしますが、そうするためにUPPER()を使用します:

=REGEXEXTRACT(REGEXREPLACE("string"; "(ng)"; UPPER("ng")); "[a-zA-Z]{1,}")

この式は、RIGHT()を使用し、大文字を指定することにより、もう少し柔軟性を提供します。

=REGEXEXTRACT(REGEXREPLACE("string"; "(ng)"; RIGHT(UPPER("string"); 2)); "[a-zA-Z]{1,}")

この最後の式はどのWordでも使用できます。また、Wordの右側から末尾までの文字数をCAPSedとすることで完全に調整可能です。

=REGEXEXTRACT(REGEXREPLACE("string";
                     RIGHT("string";  2);
               RIGHT(UPPER("string"); 2)); "[a-zA-Z]{1,}")

1
user0