テキスト検索・置換 (SearchReplaceText)
概要 (What is it?)
SearchReplaceText ノードを使用すると、複数行テキストコンテンツに対して検索および置換操作を実行できます。シンプルな文字列置換と正規表現(RegEx)ベースの検索・置換の両方をサポートしています。
使用する場面 (When would I use it?)
以下のような場面で SearchReplaceText ノードを使用します:
- 特定のパターンを置換して複数行テキストを編集したい場合
- 大文字・小文字を区別(または無視)してテキスト置換を行いたい場合
- 複雑なパターンマッチングのために正規表現を使用したい場合
- すべての一致項目、または最初の一致項目のみを置換したい場合
- 複数の行や段落を含むテキストを処理したい場合
使い方 (How to use it)
基本セットアップ
- ワークフローに SearchReplaceText ノードを追加します
- 入力テキストを接続または直接設定します(複数行テキスト対応)
- 検索パターンを設定します
- 置換文字列を設定します(複数行テキスト対応)
- 必要に応じて追加オプションを設定します
- テキスト入力を受け付けるノードに出力を接続します
パラメータ一覧 (Parameters)
- input_text: 検索・置換を実行する対象の複数行テキスト(文字列)
- search_pattern: 検索するテキストまたはパターン(文字列)
- replacement_text: 検索パターンと置き換える複数行テキスト(文字列)
- case_sensitive: 検索時に大文字・小文字を区別するかどうか(真偽値、デフォルト: true)
- use_regex: 検索パターンを正規表現として扱うかどうか(真偽値、デフォルト: false)
- replace_all: すべての一致項目を置換するか、最初の一致項目のみを置換するか(真偽値、デフォルト: true)
出力 (Outputs)
- output: 検索・置換処理が完了した複数行テキスト(文字列)
使用例 (Examples)
シンプルなテキスト置換
- ワークフローに SearchReplaceText ノードを追加します
- 入力テキストを次のように設定します:
Hello World Welcome to Griptape - 検索パターンを "World" に設定します
- 置換テキストを "Griptape" に設定します
- 出力結果は次のようになります:
Hello Griptape Welcome to Griptape
大文字・小文字を区別しない置換
- ワークフローに SearchReplaceText ノードを追加します
- 入力テキストを次のように設定します:
Hello WORLD Welcome to the WORLD - 検索パターンを "world" に設定します
- 置換テキストを "Griptape" に設定します
- case_sensitive を false に設定します
- 出力結果は次のようになります:
Hello Griptape Welcome to the Griptape
正規表現の例 (Regular Expression Examples)
基本的な正規表現パターン
入力: "Line 1\nLine 2\nLine 3"
検索パターン: "Line \\d"
置換テキスト: "Item"
Use Regex: true
出力: "Item\nItem\nItem"
このパターンは "Line" の後に任意の数字 (\d) が続く箇所に一致します。
数字の削除
入力: "Product123, Item456, Order789"
検索パターン: "\\d+"
置換テキスト: ""
Use Regex: true
出力: "Product, Item, Order"
このパターンは1文字以上の連続した数字 (\d+) に一致します。
単語境界
入力: "cat in the hat"
検索パターン: "\\bcat\\b"
置換テキスト: "dog"
Use Regex: true
出力: "dog in the hat"
このパターンは独立した単語としての "cat" にのみ一致します("catch" などには一致しません)。
複数行マッチング
入力: "First line\nSecond line\nThird line"
検索パターン: "^.*$"
置換テキスト: "New line"
Use Regex: true
出力: "New line\nNew line\nNew line"
このパターンは行全体に一致します(^ は行頭、.* は任意の文字列、$ は行末)。
正規表現クイックリファレンス (Regex Reference)
一般的な正規表現パターン
| パターン | 説明 | 例 |
|---|---|---|
\n |
改行に一致 | Line 1\nLine 2 |
\s |
任意の空白文字に一致 | Hello\sWorld |
\d |
任意の数字に一致 | \d+ は "123" に一致 |
[a-z] |
小文字アルファベットに一致 | [a-z]+ は "hello" に一致 |
[A-Z] |
大文字アルファベットに一致 | [A-Z]+ は "WORLD" に一致 |
. |
任意の1文字に一致 | a.c は "abc" に一致 |
* |
直前のパターンの0回以上の繰り返し | a* は "", "a", "aa" に一致 |
+ |
直前のパターンの1回以上の繰り返し | a+ は "a", "aa" に一致 |
? |
直前のパターンの0回または1回 | a? は "", "a" に一致 |
\b |
単語境界 | \bcat\b は "cat" に一致し、"catch" には不一致 |
正規表現モードに関する注意
正規表現モードを使用する場合、検索パターン内の特殊記号は正規表現構文として解釈されます。記号そのものを文字として検索したい場合は、必ずエスケープしてください。
プレーンテキストモード
正規表現モードを OFF にしている場合、検索パターンは文字通りの文字列として扱われ、特殊記号は自動的にエスケープされます。シンプルなテキスト置換ではこちらの方が安全です。
重要な注意点 (Important Notes)
- 正規表現を使用する際は、特殊文字のエスケープ処理に注意してください
- 大文字・小文字を無視する検索は、プレーンテキストおよび正規表現の両方で機能します
- 検索パターンが見つからない場合、元のテキストがそのまま変更されずに返されます
- 正規表現の構文が無効な場合、エラーにならず元のテキストが返されます
- 入力および出力テキストにおいて改行はそのまま保持されます
- 正規表現モードでは、検索パターン内で
\\nを使用して改行に一致させることができます
よくある問題 (Common Issues)
- use_regex が有効になっている場合の正規表現の構文エラー
- 大文字・小文字の区別設定の意図しない組み合わせによる予期しない結果
- 非常に長大なテキストと複雑な正規表現によるパフォーマンスへの影響
- 正規表現モードを使用していない場合の改行の不正確な取り扱い
参考リソース (Additional Resources)
正規表現の包括的な解説やパターンについては、以下を参照してください:
- Python Regular Expression HOWTO
- Regex101 - インタラクティブな正規表現テスト・デバッグツール
- Regular-Expressions.info - 詳細な正規表現チュートリアル