@md-misko PRありがとうございます!
本当ですか?少し驚いています。正規表現が十分に貪欲であれば、一致させることができるはずだと思います。句読点.を境界文字から削除すると、文末の単語のリンク付けが壊れることに注意してください。
regex101.comで正規表現を少しテストしたところ、現在の境界文字で機能するようです。regex101: build, test, and debug regex を参照してください。
もし私の理解が正しければ、キャプチャグループの一部を非キャプチャグループ (?:) に変更する必要があるかもしれません。
|を使用できないのは非常に迷惑であることに同意します。ID|idの部分については、正規表現を大文字小文字を区別しないようにするiフラグを使用するだけです。数字について、1〜10と1〜100の正確な範囲が必要な場合は、それは難しいです。1〜19と1〜199に緩和すると、より簡単になります。
以下は、機能すると思われる非キャプチャグループを使用した正規表現です。
/id\\s?((?:[1-9]|10)\\.(?:[1-9]|[1-9][0-9]|100))/i, https://example.com/id$2
@danekhollas フィードバックと正規表現をありがとうございます。コメントに基づいてコードを変更しました。PRはレビューの準備ができています。
「いいね!」 1
danekhollas
(Daniel Hollas)
212
素晴らしい!ただし、Discourseチームの誰かがこれをレビューする必要があります。@sam さんにCCします。
フォークしたリポジトリから拡張機能をインストールできることに注意してください(ブランチを指定することもできます)。
「いいね!」 1
sam
(Sam Saffron)
215
まず、ユーザーがコンポーネントを使用する理由と、組み込みの監視対象の単語を使用する理由を明確にしたいと思います。
「いいね!」 4
組み込みの監視単語には、主に2つの問題があることがわかりました。
- 複雑な正規表現を追加できない:「単語が長すぎます(最大100文字)」というエラーが発生します。
- 単語の境界として任意の文字(特にアンダースコア)を使用できない。
- ルールを編集したり、実行順序を変更したりできないことも、理想的とは言えません。
コンポーネントのPRは、単語の境界をユーザーに公開し、長い正規表現の問題はありません(PRで対処されている「|」を使用できないという問題を除きます)。
それ以外の場合、監視単語は完璧に機能します。これらの問題がコアで対処できるのであれば、私は全面的に賛成です。
Auto-Linkify Words - #216 by md-misko に続く個別の投稿にしました。これらがバグに該当するかどうかはわかりません。
Watch words は Unicode を尊重せず、すべての Unicode 文字を単語の境界として扱います(\b を使用した場合ですが、これは予想通りだと思います)。
さらに(watch words でテストケースを実行し、これら 2 つを見つけました):
- Watch word
\"\\bid\\(d+)\\b\" は無効な正規表現です。(真実ですが、ルールは追加されます)
\\bid\\s?(\\d+)\\b → https://example.com/id$1 は https://example.com/id%241 にリンクされます(置換を行う代わりに URL エンコードされた $1 を追加します)。
置換はサポートされていないか、これはバグですか?
jrgong
(jrgong)
218
現時点で縦線 | を使用する回避策を見つけた人はいますか?正規表現で不可欠なものがいくつかあります。
danielabc
(Daniela)
219
renato
(Renato Atilio)
220
こんにちは。
あなたがリンクしたこのテーマコンポーネントは、サム氏のものを私が、あなたが別のトピックで説明したニーズに対応するために変更したものです。
これらはシンプルなテーマコンポーネントで、テーマコンポーネントの設定に基づいて、投稿内のこれらの単語の表示方法を変更するだけです(サム氏のものは特定の単語をリンクに変換し、私のものは特定の単語を画像に変換します)。設定は管理者のみが管理できます。
あなたが説明した機能はテーマコンポーネントでは実現できません。データベースに(単語、画像のURL)のユーザーごとのセットを保存するためのプラグインが必要となり、単語から画像への変換は、調理済みの投稿(HTML)コンテンツを構築する際にサーバーサイドで行う必要があります。これらはテーマコンポーネントではできません。テーマコンポーネントはフロントエンド/クライアントサイドのコードのみです(この作業を誰かに依頼する場合、彼らがこれらの詳細を理解していることが非常に重要です)。
これはこのテーマコンポーネントの範囲外であり、はるかに複雑な作業が必要です。提案としては、この機能がどのように動作してほしいかの詳細を#marketplaceに投稿し、Discourseの内部構造に関する経験を持つ誰かをここで雇って支援してもらうことです。
danielabc
(Daniela)
221
お知らせいただきありがとうございます。そのカテゴリに行って、それについて話します。
このトピックで何度も提起されていますが、再度確認させてください。特定のカテゴリに制限したり、カテゴリを除外したりする方法はありますか?初心者のカテゴリで、新米が学ぶ必要のあるすべての基本的な用語へのリンクを掲載するために使用したいのですが、他のエリアでは、経験豊富なユーザーにとって単に迷惑になるだけです。よろしくお願いします!
「いいね!」 3
正規表現で $1 が一度しか置換されないという、厄介な制限を見つけました。
例
/foo-([0-9a-f]+)/,https://target.example/foo/$1/foo-$1
期待される結果
| キーワード |
リンク |
foo-abcd |
https://target.example/foo/abcd/foo-abcd |
実際の結果
| キーワード |
リンク |
foo-abcd |
https://target.example/foo/abcd/foo-$1 |
監視された単語の困った点は、監視された単語が投稿に現れるたびにリンクされることです。これはひどいことになります。
追伸:それを3回早口で言ってみてください。
Canapin
(Coin-coin le Canapin)
226
正確には、単語は投稿全体で一度ではなく、1行あたり一度置換されます。 
そうだといいのですが、コインさん。私のインストールにはありません。
Canapin
(Coin-coin le Canapin)
228
私のテストインスタンスでは、次のように動作します。

@Canapin さん、私の問題を無視しています。問題は単語の繰り返しではなく、単一の単語のパターンの繰り返し置換です。URLには置換対象のパターンが_2回_含まれています。
プラグインでは /g パターン置換オプションがデフォルトであるため、これは最初の1回だけでなく、置換の $1 の_すべての出現_に適用されるべきです。
これは、キーワードが文、行、または段落に複数回出現する場合とは異なるケースです。_置換_は、選択範囲の複数出現を考慮する必要があります。
「いいね!」 1
Canapin
(Coin-coin le Canapin)
231
リンクを生成するコンポーネントについて話していました。ウォッチワード機能のことではありません 
@hellekin、明確化ありがとうございます 
サムが見た単語について返信していました。
linkifyは1つしかできないとわかりましたが、投稿ごとに1つできると嬉しいです。 watched wordsは、一致するものを見つけると時々耐えられなくなるので、今日試してみる必要があるかもしれません。
「いいね!」 1