.Net регулярное выражение, соответствующее строке "C #" - PullRequest
1 голос
/ 30 апреля 2019

Я пытаюсь построить регулярное выражение (используя объект RegNet .Net), чтобы сопоставить последовательность символов "C #" с границами слова.

Поэтому, ища в строке «Я разработчик на C #, но я не разработчик C #», я пытаюсь найти первое «C #» (как слово), но не второе «C #», которое является часть слова.

  • Я пробовал шаблон "\ bC # \ b" без совпадений.

  • Я также попробовал шаблон "\ bC # \ b" (пытаясь избежать #), совпадений нет.

Я где-то читал, что знак фунта (#) можно интерпретировать как границу слова. Это правда? И если да, то как мы можем искать эту строку ("C #") как слово?

Ответы [ 2 ]

5 голосов
/ 30 апреля 2019

\b не совпадает между знаком фунта и пробелом, потому что они оба совпадают с нестрочными символами, но совпадает между знаком фунта и символом d.

Вместо секунды граница слова \b, вы могли бы утверждать, что то, что справа, не является символом без пробела \S, используя отрицательный взгляд (?!:

\bC#(?!\S)

Regex demo

Как указывалось в комментариях @ elgonzo , чтобы не допустить нарушения соответствия, когда после 101 * следует несимвольный символ, вы можете использовать положительный прогноз, чтобы утверждать, что являетсясправа либо нет слова char \W, либо указывается конец строки $

\bC#(?=\W|$)

Regex demo

0 голосов
/ 30 апреля 2019

Следующий RegEx соответствует первому слову / последнему слову / новой строке / пробелам без учета регистра

/(:?^|\s)C#(:?$|\s)/i

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...