2012-06-03 3 views
-1

У меня большие проблемы.Регулярное выражение в Perl для проверки соответствия/соответствия

Я должен проверить, соответствует ли строка (соответствует) другой строке с помощью RegEx. Например, если следующая строка:

Apr 2 13:42:32 sandbox izxp[12000]: Received disconnect from 10.11.106.14: 10: disconnected by user 

В поле ввода для редактирования я дать программе следующую сокращенную строку:

Received disconnect from 10.11.106.14: 10 

Если это соответствует существующей строке (как вы можете видеть выше) , все хорошо. Если какая-либо часть новой отредактированной строки не соответствует исходной строке, я должен предупредить пользователя с сообщением.

Не могли бы вы помочь мне решить этот вопрос с помощью RegEx? Или другой метод? Я был бы признателен!

+2

Почему вам нужно регулярное выражение? Это похоже на простой поиск строк. –

+0

Я изучаю RegEx, вот почему мне это нужно. – Freddiboy

+0

OK, я изменил это. – Freddiboy

ответ

1

Вы должны получить исходную строку в переменной, назовем ее $ original (это perl). Затем вы должны получить ввод из «редактируемого поля ввода», назовем его $ input.

Тогда это просто

if ($original=~/$input/) 
{ 
    #Your code for a message to the user here 

} 
0

Ваше решение будет менее регулярным и более ускользающим. Предполагая, что вы собираетесь использовать не шаблоны регулярных выражений и просто для поиска строки ввода буквальным, вы должны написать функцию, чтобы она превращает этот

Received disconnect from 10.11.106.14: 10

в этот

Received disconnect from 10\.11\.106\.14: 10

Это может быть достигнуто с помощью множества различных библиотек в зависимости от того, какой язык вы используете.

That will then allow you to check for a match.

Регулярные выражения больше предназначены для обычных узоров в строках, а не для поиска точных литералов.

+0

Привет, Дэвид, я использую Perl, не способ использовать код без библиотек? Только RegEx. – Freddiboy

+0

Вы не можете манипулировать строками с регулярным выражением. Регулярное выражение для поиска паттернов в строках. –

+3

@DavidB на самом деле, perl regex отлично подходит для сопоставления произвольных строк литералов, вот для чего побег '\ Q'. 'if ($ string = ~/\ Q $ substring /)' работает так же, как 'if (index ($ string, $ substring)! = -1)', за исключением того, что он расширяется с другими функциями регулярного выражения. – hobbs

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