Как я могу проверить, содержит ли данная строка определенную подстроку, используя Perl?
Более конкретно, я хочу увидеть, s1.domain.com
присутствует ли в данной строковой переменной.
string
perl
string-matching
Белгин Фиш
источник
источник
:
).Другая возможность - использовать регулярные выражения, чем знаменит Perl:
Обратные косые черты необходимы, потому что a
.
может соответствовать любому символу. Вы можете обойти эту проблему , используя\Q
и\E
оператор.Или вы можете сделать, как сказал Евгений Y, и использовать функцию индекса . Небольшое предупреждение: если индекс
-1
не может найти совпадения, он возвращает вместоundef
или0
.Таким образом, это ошибка:
Это будет неправильно, если оно
s1.domain.com
находится в начале вашей строки. Я лично обжигался на этом не раз.источник
index()
это быстрее, чем регулярные выражения в простом случае?=~
,index()
,~~
иmatch::simple
все , казалось , немногоawk
-ward ...: - \domain.com
соответствиеsubdomain.domain.com
с помощью REGEX выше, есть идеи?Пример подстроки без учета регистра
Это расширение ответа Юджина, которое преобразует строки в нижний регистр перед проверкой подстроки:
источник
fc
это рекомендуетсяlc
для сравнений без учета регистра.