Команда «regexp» используется для соответствия регулярному выражению в Tcl. Регулярное выражение — это последовательность символов, которая содержит шаблон поиска. Он состоит из нескольких правил, и следующая таблица объясняет эти правила и их соответствующее использование.
Sr.No. | Правило и описание |
---|---|
1 |
Икс Полное совпадение. |
2 |
[AZ] Любая строчная буква от аз. |
3 |
, Любой персонаж. |
4 |
^ Начальная строка должна совпадать. |
5 |
$ Конечная строка должна совпадать. |
6 |
\ ^ Последовательность люфта для соответствия специальному символу ^. Аналогично вы можете использовать для других символов. |
7 |
() Добавьте вышеуказанные последовательности в круглые скобки, чтобы сделать регулярное выражение. |
8 |
Икс* Должно совпадать с 0 или более вхождениями предыдущего x. |
9 |
х & плюс; Должно совпадать с 1 или более вхождениями предыдущего x. |
10 |
[AZ]? Должно совпадать с 0 или 1 вхождением предыдущего x. |
11 |
{разряд} Совпадает точно с цифрами вхождения предыдущего выражения регулярного выражения. Цифра, которая содержит 0-9. |
12 |
{цифра} Соответствует 3 или более разрядам предыдущего выражения регулярного выражения. Цифра, которая содержит 0-9. |
13 |
{Digit1, digit2} Вхождения соответствуют диапазону между цифрами 1 и 2 в предыдущем выражении регулярного выражения. |
Икс
Полное совпадение.
[AZ]
Любая строчная буква от аз.
,
Любой персонаж.
^
Начальная строка должна совпадать.
$
Конечная строка должна совпадать.
\ ^
Последовательность люфта для соответствия специальному символу ^. Аналогично вы можете использовать для других символов.
()
Добавьте вышеуказанные последовательности в круглые скобки, чтобы сделать регулярное выражение.
Икс*
Должно совпадать с 0 или более вхождениями предыдущего x.
х & плюс;
Должно совпадать с 1 или более вхождениями предыдущего x.
[AZ]?
Должно совпадать с 0 или 1 вхождением предыдущего x.
{разряд}
Совпадает точно с цифрами вхождения предыдущего выражения регулярного выражения. Цифра, которая содержит 0-9.
{цифра}
Соответствует 3 или более разрядам предыдущего выражения регулярного выражения. Цифра, которая содержит 0-9.
{Digit1, digit2}
Вхождения соответствуют диапазону между цифрами 1 и 2 в предыдущем выражении регулярного выражения.
Синтаксис
Синтаксис для регулярных выражений приведен ниже —
regexp optionalSwitches patterns searchString fullMatch subMatch1 ... subMatchn
Здесь регулярное выражение является командой. О дополнительных переключателях мы увидим позже. Шаблоны — это правила, упомянутые ранее. Строка поиска — это фактическая строка, в которой выполняется регулярное выражение. Полное совпадение — это любая переменная, в которой содержится результат сопоставленного результата регулярного выражения. Submatch1 to SubMatchn — это необязательная переменная subMatch, которая содержит результат шаблонов субсовпадений.
Давайте рассмотрим несколько простых примеров, прежде чем углубляться в сложные. Простой пример для строки с любыми алфавитами. При обнаружении любого другого символа в регулярном выражении поиск будет остановлен и возвращен.
#!/usr/bin/tclsh regexp {([A-Z,a-z]*)} "Tcl Tutorial" a b puts "Full Match: $a" puts "Sub Match1: $b"
Когда приведенный выше код выполняется, он дает следующий результат —
Full Match: Tcl Sub Match1: Tcl
Несколько шаблонов
В следующем примере показано, как искать несколько шаблонов. Это пример шаблона для любых алфавитов, за которыми следует любой символ, за которым следуют любые алфавиты.
#!/usr/bin/tclsh regexp {([A-Z,a-z]*).([A-Z,a-z]*)} "Tcl Tutorial" a b c puts "Full Match: $a" puts "Sub Match1: $b" puts "Sub Match2: $c"
Когда приведенный выше код выполняется, он дает следующий результат —
Full Match: Tcl Tutorial Sub Match1: Tcl Sub Match2: Tutorial
Ниже показана модифицированная версия приведенного выше кода, показывающая, что подшаблон может содержать несколько шаблонов.
#!/usr/bin/tclsh regexp {([A-Z,a-z]*.([A-Z,a-z]*))} "Tcl Tutorial" a b c puts "Full Match: $a" puts "Sub Match1: $b" puts "Sub Match2: $c"
Когда приведенный выше код выполняется, он дает следующий результат —
Full Match: Tcl Tutorial Sub Match1: Tcl Tutorial Sub Match2: Tutorial
Переключатели для Regex Command
Список переключателей, доступных в Tcl,
-
nocase — используется для игнорирования регистра
-
индексы — Храните расположение совпадающих подшаблонов вместо совпадающих символов.
-
line — Новая строка, чувствительная к совпадению. Игнорирует символы после новой строки.
-
начальный индекс — устанавливает смещение начала шаблона поиска.
-
Отмечает конец выключателей
nocase — используется для игнорирования регистра
индексы — Храните расположение совпадающих подшаблонов вместо совпадающих символов.
line — Новая строка, чувствительная к совпадению. Игнорирует символы после новой строки.
начальный индекс — устанавливает смещение начала шаблона поиска.
Отмечает конец выключателей
В приведенных выше примерах я намеренно использовал [AZ, az] для всех алфавитов, вы можете легко использовать -nocase вместо того, как показано ниже —
#!/usr/bin/tclsh regexp -nocase {([A-Z]*.([A-Z]*))} "Tcl Tutorial" a b c puts "Full Match: $a" puts "Sub Match1: $b" puts "Sub Match2: $c"
Когда приведенный выше код выполняется, он дает следующий результат —
Full Match: Tcl Tutorial Sub Match1: Tcl Tutorial Sub Match2: Tutorial
Другой пример использования переключателей показан ниже —
#!/usr/bin/tclsh regexp -nocase -line -- {([A-Z]*.([A-Z]*))} "Tcl \nTutorial" a b puts "Full Match: $a" puts "Sub Match1: $b" regexp -nocase -start 4 -line -- {([A-Z]*.([A-Z]*))} "Tcl \nTutorial" a b puts "Full Match: $a" puts "Sub Match1: $b"
Когда приведенный выше код выполняется, он дает следующий результат —