У меня есть шаблон регулярного выражения для сопоставления простых регулярных выражений, это может поймать все картины в тексте, но не первый ..регулярного выражения не соответствует всем шаблону
Моей картина
/\/((?:.|)+)\//g
Моего текст
|==== Données ====>
byteCode =
{
id : [],
tag : [],
ast : []
};
<==== Données ====|
|==== Filtres ====>
*EspaceBlanc => /\t|\n|/ ;;
<==== Filtres ====|
|==== Terminaux ====>
$PrefixeId => /#/ ;;
$$Mot => /[0-9aA-zZ-]/ ;;
$SufixeInstruction => /;/ ;;
$Separateur => /,/ ;;
$Enfant => /:/ ;;
$$Portée => /\|/ :: caractère.length ;;
<==== Terminaux ====|
|==== NonTerminaux ====>
@Tag => $Mot ::
{
const nomTag = uniSem[0].toSource();
const index = byteCode.tag.indexOf(nomTag);
// Si indexTag non présent Alors index ajout byte code
return (index >= 0)? index: (byteCode.tag.push(nomTag) - 1);
};;
@Id => ~$PrefixeId, $Mot :: byteCode.id.push(uniSem[1].toSource()) - 1;
@Elément => @Tag, [@Id] ::
{
const indexTag = uniSem[0].toSource();
const id = (uniSem[1])? uniSem[1].toSource() : -1;
return byteCode.ast.push([indexTag, id]) - 1;
};;
@InstructionSimple => @Elément, ~$SufixeInstruction :: uniSem[0].toSource();;
@Instruction =>
$Elément, ~$Enfant,
[{ @Elément, ~$Separateur } ],
@InstructionSimple ::
{
const idParent = uniSem[0].toSource();
for(let i = 1, iMax = uniSem.length - 1; i < iMax; i++)
{
byteCode.ast[idParent].push(uniSem[i].toSource());
}
// ajout de InstructionSimple
return byteCode.ast[idParent].push(uniSem[uniSem.length - 1].toSource());
};
<==== NonTerminaux ====|
|==== Terminale ====>
console.log('C\'est la fin!!');
<==== Terminale ====|
Все регулярные выражения совпадают, но это не удается:
/\t|\n|/
Исходный код:
const motif = /\/((?:.|)+)\//g;
//source is the text in stackoverflow description
let trouvé = null;
while(trouvé = motif.exec(source))
{
console.log('trouvé!!', trouvé.index);
}
Результат:
- Trouvé !! 210
- trouvé !! 236
- trouvé !! 278
- trouvé !! 308
- trouvé !! 335
- trouvé !! 363
- trouvé !! 367
- trouvé !! 697
- trouvé !! 983
Ожидаемое:
- Trouvé !! 136
- trouvé !! 210
- trouvé !! 236
- trouvé !! 278
- trouvé !! 308
- trouvé !! 335
- trouvé !! 363
- trouvé !! 367
- trouvé !! 697
- trouvé !! 983
https://jsfiddle.net/4bx7hboz/5/
РЕДАКТИРОВАТЬ: Шаблон матча на regexr.com или regex101.com. Это не работает в консоли, потому что «\ t» не найден был разобран и шаблон не соответствует \ t parsed ... Я размышляю о способе хранения строки без разбора слов, представляю специальный символ, такой как \ т.
Благодарим вас за помощь и не беспокоитесь о языке моего текста (это не javascript).
@ user2138045 [Ваш RegEx работает?] (Https://regex101.com/r/hP6gT7/1) – Druzion
Может быть, вы могли бы прийти к этому [чат] (http://chat.stackoverflow.com/rooms/108634/regexp-not-matching-all-pattern), чтобы обсудить это? –
Btw, '(?:. |)' Бессмысленно. '.' уже соответствует пробелам. – Bergi