У меня есть динамически построен великоватый регулярное выражение, например, укоротить пример текстасовпадение слов в регулярном выражении, но только если первая буква в верхнем регистре
my $regex = qr/(daisy|john|fred|june)/is;
my $test = 'Later John said blah and JOHN said ignore john .....';
while($test =~ /($regex)/g) {
warn $1;
}
# Shows all 3 matches
Я хотел бы регулярное выражение, чтобы соответствовать каждому вхождение в «Джона» ИЛИ «JOHN» и т. Д., Но НЕ, если первая буква является строчной буквой, например «john» не должна совпадать.
Я мог бы повторить слова регулярных выражений при строительстве, как
/(Daisy|DAISY|John|JOHN|Fred|FRED....)/
Но есть какой-то интересный способ не нуждаясь, чтобы сделать это, и регулярное выражение только выдастся если первая буква заглавная?
Я мог бы выполнить 2-й чек вне регулярного выражения после нечувствительного к регистру совпадения в качестве возможного решения и просто игнорировать его, если совпадение! ~/[AZ]/или что-то в этом роде, но мне интересно узнать, есть ли способ внутри одного регулярного выражения добавить дополнительное условие?
Несмотря на то, что обычно, я бы просто придерживаться написания кода в 'perl' и не пытаться писать его в' regex'. Последнее достаточно мощное, но на самом деле это не так хорошо для читаемости. – Sobrique
честно, и я парень-регек, я думаю, что ваше последнее предлагаемое решение - лучший способ. (2-я проверка внешнего регулярного выражения) – sweaver2112
Если это самый интуитивный, я, скорее всего, пойду за это, я просто не был уверен, был ли какой-то «простой» метод, о котором я не знал. – Ian