2015-12-31 2 views
-4

Может ли кто-нибудь сказать мне, что [Cc] в этом коде называется? Я знаю, что он делает, но я понятия не имею, как это называется.Что такое/[Cc] at/in perl?

#!/usr/bin/perl 

$sentence = "Big cat sat."; 
$sentence =~ /[Cc]at/; 

print "$`, $&, $'\n"; #prints Big, cat, sat. 

Также кто-нибудь знает, что такое perl-эквивалент re.search python 2.7. Все, что я продолжаю находить, - это что-то вроде замены python, изменяемого и ничего не говорящего о поиске.

+3

Regex/регулярное выражение – Marged

+0

В '/ Foo /', 'Foo' является регулярным выражением. Таким образом, находясь внутри '//', ваш '[Cc]' является синтаксисом regex. –

+1

Просто стандартное регулярное выражение, ничего конкретного perl. Это даже не PCRE или расширенный, это правильное регулярное выражение в любом вкусе. [] скобки соответствуют любому символу, который они заключили. –

ответ

7

Квотные группы символов называются character classes или наборы символов.

Регулярные выражения имеют simple formal definition всего несколько операций. Одна из этих операций - alternation. Альтернации позволяют вам сопоставлять с объединением двух наборов строк. Наборы символов являются синтаксисом для чередования по группе одиночных символьных строк. Чаще всего, когда мы говорим о alternations in regular expressions, мы имеем в виду использование вертикальной полосы |, которая соответствует объединению выражений по обеим сторонам панели.

4

Я не очень понимаю близкие голоса, но вы допустили ошибку, задав более одного вопроса!

Трудно знать, что отключение вас, но это может помочь

Узор /[Cc]at/ в целом является регулярного выражения, регулярного выражения или регулярного выражением, в то время как конкретный компонент [Cc] называется класс символов, который соответствует любому набору символов; в этом случае верхний или нижний регистр C. Он документирован в документации Python для Regular Expression Syntax, который называет это просто «набором символов» и говорит о таких вещах, как \d (числовые цифры) и \w («слова») в качестве классов символов.В Perl конструкция квадратного кронштейна также является классом символов

Документация для re.search на той же странице довольно проста, и, похоже, вы использовали свой эквивалент Perl в своем коде, поэтому я не понимаю проблемы, с которой вы столкнулись «повторно имея

в Python

object = re.search(pattern, string) 

проверки для возникновения шаблона где-нибудь в строке и устанавливает object к match object, если он найден, или None иначе

Это то же самое в Perl, как с помощью связывания оператора=~ как этот

my $result = $string =~ /pattern/ 

который устанавливает $result к истинному значением , если совпадение найдено, или ложно иначе

Взгляните на документацию на Python для search() vs. match()

re.match идентичен re.search, за исключением того, что матч должен происходить в самом начале строки