複数検索置換
ACME CorpをNova Labsに、ACMEをNovaに、サポートのアドレスを新しいものに一度で置き換えます。3つのペアで3件の置換が並べた順に行われます。長い語句を先に置き、最大100ペアまで文字どおりに一致します。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
編集者、ローカライズチーム、自動化パイプラインでは、単一の検索と置換では足りないことがよくあります。ブランド改名、用語集パック、テンプレート用トークンの一式を、一貫した一回の処理で揃える必要があります。大文字小文字を無視するオプションにより、Hello と HELLO を列挙せずにまとめて変更できます。用語の整備、複数トークンのテンプレート埋め、CMS 準備、決定的なフィクスチャに使えます。
複数検索置換の意味と使う場面
複数検索置換とは、順序付きの検索語リストを順にたどり、各語の重ならない出現ごとに置換を書き込み、編集後の文字列を次のペアへ渡してリストが終わるまで続ける処理です。一致はリテラルです。 ピリオドや括弧などの正規表現メタ文字もただの文字として扱い、用語集パックが非開発者にも、特殊文字で驚かないパイプラインにも予測可能です。
検索意図が複数検索置換、一括置換、複数の置換ペア適用、用語パック書き換え、多数のテンプレートトークンを一度に埋める場合に、この計算機を選んでください。
典型的な素材は、製品ファミリー名を変えるマーケティング文、複数 URL を一度に更新するサポートマクロ、禁止フレーズを十数個入れ替えるローカライズ用スタイル、company・year・plan などのプレースホルダをまとめて解決する設定断片です。ペアの順序は意図的です。
長い句を短い部分文字列より先に書き換えると、ACME Corp を Nova Labs にしたあとで ACME を Nova にする規則が走り、部分的な破壊を避けられます。大文字小文字無視の一致は全ペアに効き、一つのパックで混在した下書きを拾えます。キャプチャグループや lookaround、本格的な複数行正規表現エンジンが必要なときは使わないでください。
それは専用の正規表現ツールが担う別の意図です。検索語が一つの単一ペア用ランディングもあり、このページは複数ペア向けです。
活用例
ブランド・用語パック
旧製品名、法人名、略称の用語集を順序付きの一回処理で適用し、長い句を短い部分文字列より先に書き換えて、どの文書も同じ用語セットに揃えます。
よくある質問
検索語が空の場合はどうなりますか?
いずれかのペアで空の find は拒否され、パイプラインが黙って何もしない事故や、空文字を至る所に置換する古典的な落とし穴を防ぎます。これらの失敗は課金されません。
ペアはどの順序で適用されますか?
厳密に順次です。 最初のペアが元のテキストを編集し、次のペアがその結果を編集し、と続きます。後のペアは前の置換が入れた文字列をさらに書き換えられます。順序が重要なときは長い句を短いものより先に並べてください。
find は正規表現に対応しますか?
いいえ。 各検索語は常にリテラル文字列として扱われます。ピリオドや括弧などの正規表現メタ文字も自分自身に一致し、用語集パックが編集者や一括ジョブにとって予測可能です。
一度にいくつのペアを適用できますか?
1回の処理で最大100ペアまで適用できます。ペアごとに置換した件数が表示され、合計の件数も分かるので、用語集のどの項目が効き、どれが何も見つけなかったかを確認できます。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/str/replace-multiple \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Hello ACME Corp. Welcome to ACME. Contact support@acme.example.","replacements":[{"find":"ACME Corp","replace":"Nova Labs"},{"find":"ACME","replace":"Nova"},{"find":"support@acme.example","replace":"hello@nova.example"}]}'const res = await fetch("https://api.kit.forhosting.com/str/replace-multiple", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "Hello ACME Corp. Welcome to ACME. Contact support@acme.example.",
"replacements": [
{
"find": "ACME Corp",
"replace": "Nova Labs"
},
{
"find": "ACME",
"replace": "Nova"
},
{
"find": "support@acme.example",
"replace": "hello@nova.example"
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/str/replace-multiple",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "Hello ACME Corp. Welcome to ACME. Contact support@acme.example.",
"replacements": [
{
"find": "ACME Corp",
"replace": "Nova Labs"
},
{
"find": "ACME",
"replace": "Nova"
},
{
"find": "support@acme.example",
"replace": "hello@nova.example"
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/str/replace-multiple", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"Hello ACME Corp. Welcome to ACME. Contact support@acme.example.","replacements":[{"find":"ACME Corp","replace":"Nova Labs"},{"find":"ACME","replace":"Nova"},{"find":"support@acme.example","replace":"hello@nova.example"}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"Hello ACME Corp. Welcome to ACME. Contact support@acme.example.","replacements":[{"find":"ACME Corp","replace":"Nova Labs"},{"find":"ACME","replace":"Nova"},{"find":"support@acme.example","replace":"hello@nova.example"}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/str/replace-multiple", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"text": "Hello ACME Corp. Welcome to ACME. Contact support@acme.example.",
"replacements": [
{
"find": "ACME Corp",
"replace": "Nova Labs"
},
{
"find": "ACME",
"replace": "Nova"
},
{
"find": "support@acme.example",
"replace": "hello@nova.example"
}
]
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "str.replace_multiple",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
この複数検索置換ツールは、元の文字列と順序付きの検索/置換ペア一覧を受け取り、各ペアをリテラル一致で順に適用し、最終テキスト・ペアごとの一致件数・置換合計を含む安定した JSON 契約を返します。いずれかのペアで空の検索語があると invalid_input となり、一括ジョブが黙って何もしない事故を防ぎます。
複数検索置換の意味と使う場面
アルゴリズムは完全に決定的で、同じ入力は常に同じ JSON を返し、ネットワークも乱数も壁時計も使いません。いずれかのペアで空の find があると invalid_input となり、空文字を至る所に置換する古典的な落とし穴から一括ジョブを守ります。
入力契約・順序付きペア・応答の読み方
replace が無い場合は空文字となり、そのペアの一致はすべて削除されます。古いクライアント向けに別名があります。各ペア内で find は search・needle・from・old、replace は replacement・with・to・new も可です。必須の文字列フィールド text に編集したい元文を、必須の配列フィールド replacements に、空でない find と任意の replace を持つオブジェクトを少なくとも一つ入れて JSON を送ってください。任意の case_insensitive は既定で false(厳密な大文字小文字)で、混在下書きでも全ペアで一致させたいときは true にします。text は input・value・s・content・source、replacements は pairs・rules・substitutions、case_insensitive は ignore_case・ci・insensitive でも受け付けます。1リクエストあたり最大100ペアです。text 欠落、replacements 欠落、配列でない一覧、空一覧、オブジェクトでないペア、文字列でない find、空の find はすべて invalid_input となり、問題を名指しするメッセージ付きで、プリペイド API では課金されません。きれいな文字列だけなら result、用語のどれが発火したか記録するならペアごとの count、編集量を追うなら total_count を使います。ペイロードは Worker isolate に適した文・段落・短い文書サイズに留め、数メガバイトのダンプは避けてください。
API の使い方・料金・ワークフロー・実用上の限界
貼り付けの整理、用語集の試行、授業デモ、コンテンツ QA、複数トークンの改名には、デスクトップユーティリティを入れたり言語ごとに split-join を書いたりせず、無料のブラウザ版複数検索置換ツールを呼び出してください。検証失敗はエンジン拒否後に残高を消費しません。次がスタイル整理ならスペース整理やケース変換と組み合わせつつ、複数検索置換は単一ペアツールや正規表現プレイグラウンドと SEO 意図を混ぜないよう独立ランディングにしてください。ゼロ一致、順序付き複数ペア書き換え、case-insensitive パック、空検索拒否のフィクスチャを固定し、リファクタで約束が静かに変わらないようにします。CMS、ETL、フォームバックエンド、サポートデスク、モバイルクライアントが同じ複数ペア変換を残高付きで必要とするときは、成功1件あたり $0.002 のプリペイド KIT API を使います。典型的な流れは、正式名称、略称、連絡先の順にブランド改名パックを送り、total_count で期待どおり更新されたか確認することです。別の流れでは company・product・plan などのテンプレートトークンを1リクエストのペア一覧で埋めたり、空の replace で廃止マーカーを消したりします。タグを飛ばす HTML 認識の書き換え、構造化ドキュメントのマージフィールド、最長一致の並列解決、標準 ignore-case を超えるロケール照合は期待しないでください。別問題です。 SDK を出す作者は text と replacements を必須とし、複数ペア成功例と空 find のエラー例を示して契約の両面を見せるとよいです。
連携の活用例
複数トークンのテンプレート埋め
company・product・plan・year などのプレースホルダを、単一ペアの API を連鎖させる代わりに、各検索/置換ペアを一覧して下書きやマクロ上で解決します。
QA と決定的フィクスチャ
テストハーネスが複数ペアの Golden 出力を固定し、ペア順・空 find 拒否・大文字小文字無視の変更を伴うリファクタは継続的インテグレーションで即座に失敗します。
技術的な質問
このツールで複数検索置換を実行するには?
text に元の文字列、replacements に空でない find と任意の replace を持つオブジェクトの配列を JSON で送ってください。ペアは順に適用されます。応答には result、ペアごとの件数、total_count が含まれます。
複数検索置換ツールは無料ですか?
ブラウザツールは端末上で無料です。API 呼び出しは成功1件あたり $0.002 の KIT プリペイド残高を使います。検証失敗は課金されません。