Это выражение имеет простую группу захвата между A+
, которая пролистывает все не-A символы между слева направо:
A+([^A]*)A+
Если вы хотите захватить A+
, вы можете просто обернуть их двумя группами захвата ()
, аналогично этому выражению :
(A+)([^A]*)(A+)
Если вы не хотите сопоставлять символ A
, вы можете просто удалить их из выражения :
[^A]*
Однако это не будет совпадать, если между ними будет A, и его необходимо изменить.
Описательный график RegEx
Этот график отображает выражение, и, если хотите, вы можете проверить другие выражения в этой ссылке :
JavaScript тест
const regex = /(A+)([^A]*)(A+)/gm;
const str = `AA4grgrsragrga4334grAA
AAA4323425AAA
AAAAAA%%%AAAAAA`;
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}`);
});
}
Базовый тест производительности для (A +) ([^ A] *) (A +)
Этот фрагмент JavaScript возвращает время выполнения цикла for
в миллион раз для повышения производительности.
const repeat = 1000000;
const start = Date.now();
for (var i = repeat; i >= 0; i--) {
const string = 'AAAAAAAAAanyThingElse4grgrsragrga4334grAAAA';
const regex = /(A+)([^A]*)(A+)/gm;
var match = string.replace(regex, "\nGroup #1: $1\nGroup #2: $2\nGroup #3: $3\n");
}
const end = Date.now() - start;
console.log("YAAAY! \"" + match + "\" is a match ??? ");
console.log(end / 1000 + " is the runtime of " + repeat + " times benchmark test. ? ");
Базовый тест производительности для A + ([^ A] *) A +
const repeat = 1000000;
const start = Date.now();
for (var i = repeat; i >= 0; i--) {
const string = 'AAAAAAAAAanyThingElse4grgrsragrga4334grAAAA';
const regex = /A+([^A]*)A+/gm;
var match = string.replace(regex, "Group #1: $1");
}
const end = Date.now() - start;
console.log("YAAAY! \"" + match + "\" is a match ??? ");
console.log(end / 1000 + " is the runtime of " + repeat + " times benchmark test. ? ");