Соответствие сбежал HTML в регулярном выражении C # - PullRequest
0 голосов
/ 23 ноября 2011

Как я могу избежать html-кодов в Regex?

Мне нужно найти строку

&

в строке типа

this is my string & this is another string

Не могу использоватьHtmlEncode / Decode для этой цели, потому что мне нужно работать с тегами.Что я хочу, я просто нахожу общую строку.

Я использую это и работаю, например, с «другим» или «моим», но не работает с "&".

            Regex regularextest = new Regex("\b&\b", options);
            string RSTest = "char $& morechar";
            string lalala = regularextest.Replace("foo & bar", RSTest);

Это очень неприятно, потому что Google заменяет строку словом & или "AND".

Заранее спасибо

Ответы [ 2 ]

2 голосов
/ 23 ноября 2011

Это \b&\b не будет совпадать, потому что & и ; не являются символами слов.

Вы можете попробовать это:

Regex regularextest = new Regex("(?<=^|\s+)&amp;(?=\s+|$)", options);
0 голосов
/ 23 ноября 2011

Если вам нужно идентифицировать / преобразовать действительные объекты (не в Юникоде), вы можете использовать это регулярное выражение
(?:&(?:[A-Za-z_:][\w:.-]*|\#(?:[0-9]+|x[0-9a-fA-F]+));)
чтобы определить возможное значение для замены, передайте его функции обратного вызова, которая дополнительно обрабатывает объект, который вы хотите заменить. Таким образом, все это может быть сделано в одной глобальной замене регулярного выражения (с логикой обратного вызова).

...