# 正規表現（Regex）

> Map Local や Breakpoint などの Proxyman ツールで、ワイルドカードと正規表現（Regex）のマッチングルールを使用できます。保存する前に、サンプル URL でルールをテストできます。

## 1. 概要 {#1-whats-it}

Proxyman はバージョン 2.3.0 以降、すべてのデバッグツールでマッチングルールを定義する際に、**ワイルドカード**と **Regex**（単語全体の一致）をサポートしています：

* [Map Local](https://proxyman.com/docs/ja/advanced-features/map-local)
* [Map Remote](https://proxyman.com/docs/ja/advanced-features/map-remote)
* [Block List](https://proxyman.com/docs/ja/advanced-features/blacklist) と [Allow List](https://proxyman.com/docs/ja/advanced-features/whitelist)
* [Breakpoint](https://proxyman.com/docs/ja/advanced-features/breakpoint)
* [Protocol Buffers (Protobuf)](https://proxyman.com/docs/ja/advanced-features/protobuf)
* [Reverse Proxy](https://proxyman.com/docs/ja/advanced-features/reverse-proxy)
* [Network Conditions](https://proxyman.com/docs/ja/advanced-features/network-throttling)
* ...

ルールによって、どのリクエストをツールの対象にするかを正確に定義できます。

![Matching Rule 列に Regex ルール 1 件と Wildcard ルール 2 件がある Proxyman の Map Remote ルール一覧](https://proxyman.com/docs/assets/proxyman-map-remote-rules.jpg)

_ワイルドカードと Regex のルール_

## 2. URL をテスト（新機能 🎉） {#2-test-your-url-new-feature-}

Proxyman v4.8.0 以降では、ワイルドカードまたは Regex のルールをすばやくテストできます。

* ワイルドカードまたは Regex のルールをすばやくテストし、動作を確認できます。
* **時間を節約**: URL を確認するために行き来する必要がありません。
* ミスを減らせます。

![ワイルドカード http://localhost:3000/* を 3 つの URL と照合し、Matched または Not Matched を表示している Proxyman の Test Rules ウィンドウ](https://proxyman.com/docs/assets/proxyman-test-rules-window.jpg)

_ルールを URL でテスト_

#### 使い方 {#how-to-use-it}

1. 任意のデバッグツール（Breakpoint、Map Local など）を開き、新しいルールを作成します。
2. **Test your Rule** ボタンをクリックします。Test Rules ウィンドウが開きます。
3. ルールと確認したい URL を追加します。

* :white\_check\_mark: Matched: URL がルールに一致しています。
* :warning: Not Matched: URL がルールに一致していません。ワイルドカードまたは Regex のルールを書き直す必要があるかもしれません。

## 3. ワイルドカード {#3-wildcard}

Proxyman は 2 種類のシンプルなワイルドカード文字をサポートしています：`*` と `?`

| ワイルドカード | 用途                                                                 |
| -------- | -------------------------------------------------------------------- |
| `*`      | ワイルドカードの `*` は、任意の文字に 0 回以上一致します。                  |
| `?`      | ワイルドカードの `?` は、任意の 1 文字に一致します。                        |

例：

* http://proxyman.io/v1/\*
* https://myserver.com/v?/\*

## 4. 正規表現（Regex） {#4-regex}

Proxyman は Regex（正規表現）もサポートしています。 

* 正規表現が **URL 全体に一致する** ようにしてください。
* **部分一致** は、一致しないものとして扱われます。
* スラッシュ（/）、ドット（.）などの **文字を正しくエスケープ** してください。

例：

| Regex                                                                        | 一致する URL の例                                                                                |
| ---------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------ |
| https:\\/\\/proxyman\\.io.\*                                                 | <p>https://proxyman.io<br>https://proxyman.io/v1/data?id=123<br>https://proxyman.io/pricing</p>  |
| ^(http\|https):\\/\\/www\\.google\\.com.\*                                   | <p>http://www.google.com<br>http://www.google.com/user?id=proxyman<br>https://www.google.com</p> |
| ^(http\|https)?:\\/\\/www\\.google\\.com\\/v\[0-9]?\\/build\\?query=proxyman | <p>http://www.google.com/v1/build?query=proxyman<br>www.google.com/v2/build?query=proxyman</p>   |

[regex101](https://regex101.com/) を使うと、正規表現が URL 全体に一致するかどうかを確認できます。

![3 つの google.com URL に完全に一致する正規表現を示す regex101 のテスト](https://proxyman.com/docs/assets/1.png)

> **備考:** Proxyman は Apple の NSRegularExpression を使用しています。サポートされている機能は、Apple Developer ドキュメントの [**Regex** のメタ文字、演算子、フラグ](https://developer.apple.com/documentation/foundation/nsregularexpression#1965590) で確認できます。

> **備考:** [regex101.com](https://regex101.com) で正規表現を確認し、指定した URL に完全に一致することを確かめてください。

* ルールを作成するときに **Use Regex** を選択します。

> **備考:** 正規表現では、`?` と `*` の意味がワイルドカードとは異なります。ワイルドカードの `?` は正規表現の `.`、ワイルドカードの `*` は正規表現の `.*` に相当します。
