정말 그런가요? 조금 놀랍네요. 정규 표현식이 충분히 탐욕(greedy)스럽다면 매칭할 수 있을 거라고 생각했습니다. 참고로 경계 문자에서 점을 제거하면 문장 끝의 단어에 링크를 걸지 못하게 됩니다.
아래에서 제공한 정규 표현식으로 regex101.com에서 간단히 테스트해 보았는데, 현재 경계 문자로는 잘 작동하는 것 같습니다. regex101: build, test, and debug regex 참고로 의도를 제가 제대로 이해했다면, 캡처 그룹 중 일부를 (?:)를 사용하여 비캡처 그룹(non-capturing groups)으로 변경해야 할 수 있습니다.
|를 사용할 수 없다는 점은 매우 번거롭죠, 동의합니다. 참고로 ID|id 부분은 정규 표현식을 대소문자 구분 없게(case insensitive) 만들기 위해 i 수정자(modifier)를 사용하면 됩니다. 숫자의 경우 1~10과 1~100 사이의 정확한 범위가 정말 필요하다면 처리가 까다롭지만, 1~19와 1~199로 범위를 넓히면 더 쉬워집니다.
링크하신 이 테마 컴포넌트는 다른 토픽에서 설명하신 필요 사항에 대한 임시 해결책으로 제가 Sam의 컴포넌트를 변형한 것입니다.
이들은 테마 컴포넌트 설정(관리자만 관리 가능)에 따라 게시글에서 해당 단어들이 어떻게 렌더링되는지만 변경하는 단순한 테마 컴포넌트입니다(Sam의 컴포넌트는 특정 단어를 링크로 변환하고, 제 컴포넌트는 특정 단어를 이미지로 변환합니다).
설명하신 기능은 테마 컴포넌트로는 구현할 수 없으며, 데이터베이스에 사용자별 (단어, 이미지 URL) 세트를 저장하는 플러그인이 필요합니다. 또한 단어에서 이미지로의 변환은 게시글(HTML) 콘텐츠를 생성할 때 서버 측에서 수행되어야 합니다. 이러한 작업은 테마 컴포넌트(프론트엔드/클라이언트 측 코드만 포함)에서는 수행할 수 없습니다(이 작업을 위해 누군가를 고용할 경우, 이러한 세부 사항을 이해하는 것이 매우 중요합니다).
이것은 해당 테마 컴포넌트의 범위를 벗어나며 훨씬 더 복잡한 작업이 필요합니다. 해당 기능이 어떻게 동작하기를 원하는지에 대한 세부 사항을 Marketplace 채널에 게시하고, Discourse 내부 구조에 대한 이전 경험이 있는 개발자를 이곳에서 고용해 도움을 받으시는 것을 제안합니다.
이 주제에서 여러 번 언급되었지만, 한 번 더 확인하고 싶습니다. 특정 카테고리로 제한하거나 카테고리를 제외하는 방법이 있을까요? 초보자 카테고리에 이 기능을 사용해서, 신참들이 알아야 할 기본 용어들에 대한 링크를 모두 표시하고 싶습니다. 하지만 다른 영역에서는 경험 있는 사용자들에게 그냥 성가신 요소가 될 뿐이거든요. 감사합니다!