Выражение, которое мы хотим разработать, довольно интересно.Сначала мы можем добавить ваше оригинальное выражение с небольшой модификацией в группу захвата, затем нам следует подумать о левой и правой границах вокруг него.Например, справа мы можем захотеть использовать \D
:
([A-Za-z]{3}[0-9]{1,2})\D
Мы можем точно определить точное ограниченное выражение.Тем не менее, это может просто сработать.
Основываясь на совете Кэри Свовеланд , мы также можем использовать это выражение, которое гораздо лучше:
\p{L}{3}\d{1,2}(?!\d)
Тест
re = /([A-Za-z]{3}[0-9]{1,2})\D/m
str = 'abcjkhklfdpdn24hjkk
hjdksfkpdf1lkjk
hjgjdkspdg34kjfs dhj khk678jkfhlds1 '
# Print the match result
str.scan(re) do |match|
puts match.to_s
end
Этот скрипт показывает, как работает группа захвата:
const regex = /([A-Za-z]{3}[0-9]{1,2})\D/gm;
const str = `abcjkhklfdpdn24hjkk
hjdksfkpdf1lkjk
hjgjdkspdg34kjfs dhj khk678jkfhlds1 `;
let m;
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) => {
console.log(`Found match, group ${groupIndex}: ${match}`);
});
}