2010-08-25 2 views
2

Скажем, у меня есть строка поиска, как:Coverting основную поисковую строку в регулярное выражение

«? Здравствуйте [NAME], как ты сегодня я в порядке.»

Если бы я должен был использовать регулярное выражение для поиска текста я бы преобразовать его в нечто подобном (при условии, что «\» является допустимым поиск регулярного выражения для одного пространства):

«\ Hello \ \ [NAME \], \ how \ are \ you \ today \? \ I \ am \ fine. "

Теперь, прежде чем я уйду и попытаюсь написать функцию, чтобы сделать это сам, кто-нибудь знает о чем-то, что уже делает такое преобразование? (Eclipse делает что-то вроде этого, он преобразует все свои поисковые запросы в регулярные выражения перед поиском, даже если вы не устанавливаете шаблон поиска в качестве регулярного выражения).

Я нацелен на C# в этом случае, но не хочу добавлять для других языков, поскольку другие люди могут быть заинтересованы в аналогичной вещи для Java, Python et al.

+0

Вам не нужно выделять пробелы в регулярном выражении (если вы не установили флаг IgnorePatternWhitespace). – Jens

+0

@Jens Вам не нужно, но также нет вреда в экранирующих пространствах, даже если флаг не установлен. Если вы пишете метод для экранирования, вы, вероятно, захотите избежать пробелов, так что вам не нужно заботиться о том, будет ли установлено значение IgnorePatternWhitespace при использовании возвращаемого шаблона. – stevemegson

+0

Если я этого не сделал, то: '' Hello \ \ \ \ [Name] .... "' (Это более чем с одним пространством). Соединился бы, чего я не хочу. – cyborg

ответ

4

Regex.Escape(string) вернет шаблон Regex, который соответствует строковой литературе.

В частности, оно ускользает от \*+?|{[()^$.# и пробелов.

+0

Выглядит отлично - я дам ему вихрь. – cyborg

Смежные вопросы