как окружить слово с помощью System.Text.RegularExpressions.Regex - PullRequest
0 голосов
/ 12 апреля 2011

Я видел эту тему: Как заключить текст в скобки с помощью регулярных выражений? но это на рубине, и я не знаю аналога для C # Я пытался

text = System.Text.RegularExpressions.Regex.Replace(text, ' '  + SpecialWord + ' ', " \"\0\" ", System.Text.RegularExpressions.RegexOptions.IgnoreCase);

но это не вставило мое подходящее слово. Так, как мне окружить мое совпавшее слово кавычками?

Ответы [ 2 ]

1 голос
/ 12 апреля 2011

используйте $ вместо \ для обратной ссылки.Кроме того, поместите свое специальное слово в скобки и укажите ссылку на эту подгруппу, в противном случае вы получите полную совпадающую строку:

text = System.Text.RegularExpressions.Regex.Replace(
                         text, "\\b("  + SpecialWord + ")\\b", " \"$1\" ", 
                         System.Text.RegularExpressions.RegexOptions.IgnoreCase);

Объяснение:

  • \b - это словограница, т. е. пробел, конец строки, точка остановки и т. д.
  • $0 будет соответствовать всему совпадению, т. е. включая границу слова, тогда как $1 соответствует первой подгруппе, то естьчасть в скобках.
0 голосов
/ 12 апреля 2011

Попробуйте использовать \b для сопоставления границы слова, а не пробела.

Вам также нужно использовать $0 вместо \0.

text = Regex.Replace(text, @"\b" + SpecialWord + @"\b", @" ""$0"" ", RegexOptions.IgnoreCase);
...