2015-10-18 2 views
-1

Как я могу написать это:Вставить строку в регулярном выражении поиска C#

List<string> Words= new List<string>(); 

Regex re = new Regex(@"\b" + Words[n] + "\b"); 

Моим точно вопрос, как я могу искать элементы из списка или строк с помощью регулярных выражений?

+0

Вы хотите проверить каждую запись в списке для этого выражения '' \ b "word" \ b "' – Cjen1

+0

Я имею в виду проверить все элементы из списка для \ b \ b – rfk12

+0

Так что вы хотите: утверждение '' \ b "+ word" \ b "' будет соответствовать чему-либо повторению слова. Итак, что вы проверяете? Этот код будет работать для проверки того, содержится ли слово в другой строке? – Cjen1

ответ

1

Возможное решение:

string testString = "cat and dog"; 
string[] Words = { "cat", "dog" }; 

foreach(string word in Words) 
{ 
    bool contains = Regex.IsMatch(testString, "\\b" + word + "\\b"); 
} 
+0

Я бы удалял локальную переменную 'Regex re;' и вызывал статический вспомогательный метод: 'bool contains = Regex.IsMatch (testString, String.Format (" \ b {0} \ b ", word))' –

+0

Он должен be '" \\ b "+ word +" \\ b "', вам нужно использовать двойные обратные черты в шаблонах регулярных выражений, так как обратная косая черта - это специальный символ в C# –

0

Вы можете использовать все слова в одном регулярном выражении:

var words= new List<string>(); 
var regex = new Regex(string.Format(@"\b(?:{0})\b", string.Join("|", words)), RegexOptions.Compiled); 
0

Это даст вам список строк регулярных выражений шаблонов:

List<string> words= new List<string>() { "cat", "dog" }; 

List<string> regexPatterns = words.Select(str => "\\b" + str + "\\b").ToList(); 

Или если вам нужен список объектов регулярных выражений:

List<Regex> regexObjects = words.Select(str => new Regex("\\b" + str + "\\b")).ToList(); 
Смежные вопросы