C # Regex получать слова, которые начинаются с? - PullRequest
1 голос
/ 17 октября 2010

Как я могу использовать регулярное выражение для получения слов, которые начинаются с ! ? Например, !Test.

Я пробовал это, но оно не дает совпадений:

@"\B\!\d+\b"

Хотя это сработало, когда я заменил ! на $.

Ответы [ 2 ]

6 голосов
/ 17 октября 2010

Я бы сказал, что с вашим регулярным выражением все в порядке, вам просто нужно использовать \w (буквенно-цифровой символ) вместо \d (цифра):

@"\B!\w+\b"

будет соответствовать любому слову, которому непосредственно предшествует !, если только самому ! не предшествует само слово (это то, что утверждает \B). Использование ^ вместо этого ограничит совпадения словами, которые начинаются в начале строки, что может быть не тем, что вы хотите.

Таким образом, это будет соответствовать всем словам, включая ровно одно предшествующее ! в этой строке:

!hello !this ...!will !!!be !matched!

но ни одно из слов в этой строке:

this! won't!be matched!!! 

Вы также можете вообще отказаться от \B, если не возражаете против совпадения !that в this!that.

4 голосов
/ 17 октября 2010

Это должно работать: ^! \ W +

 MatchCollection matches = Regex.Matches (inputText, @"^!\w+");

 foreach (Match  match in matches)
 {
      Console.WriteLine (match.Value);
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...