Причина совпадения трех символов для каждого совпадения заключается в том, что при использовании квадратных скобок '[]
' вы сопоставляете один символ из возможного диапазона символов. Таким образом, ваше регулярное выражение в настоящее время ищет все, что имеет алфавитный c символ между az, затем подчеркивание и, наконец, еще один символ между 0-9 или az.
Чтобы соответствовать нескольким символам, вы можете добавить Звездочка '+
' квантификатор, который говорит, что бит регулярного выражения, к которому он добавлен, должен соответствовать 1 или более раз.
Таким образом, чтобы получить полные совпадения, вы можете использовать следующее: /[a-z]+_[0-9a-z.]+/g
Однако это также будет соответствовать hoenicopterus_ruber
, указанному в URL.
Чтобы обойти эту проблему, вы можете использовать положительный взгляд за спиной :
(?<=wikipedia\/|,)[a-z]+_[0-9a-z.]+
ПРИМЕЧАНИЕ: Я сделал предположение, что все URL, которые вы анализируете, являются ссылками из Википедии. Если это не так, вам понадобится другое решение для второго вопроса.