У меня есть следующее регулярное выражение:Исключить последний символ матча регулярного выражения
%(?:\\.|[^%\\ ])*%([,;\\\s])
Это прекрасно работает, но, очевидно, это также выдвигает на первый план следующего символа до последнего %
.
Мне было интересно, как я могу исключить его из регулярного выражения?
Например, если у меня есть:
The files under users\%username%\desktop\ are:
Это подчеркнет %username%\
, но я просто хочу %username%
. С другой стороны, если я оставлю регулярное выражение как это:
%(?:\\.|[^%\\ ])*%
... тогда он будет соответствовать этому шаблону, что я не хочу:
%example1%example2%example3
Любая идея, как исключить последний символ в матче через регулярное выражение?
Я думаю, что нашел решение с новым RegEx ... извините за публикацию этого слишком рано! Это делает то, что мне нужно ... '% (?: \\.| [^ "% \ d \\]) *%' – user3587624
Это регулярное выражение неэффективно, так как у вас есть группа чередования с применяемым квантификатором. Если это не проблема (строки у вас короткие), это нормально. Если они могут быть немного длиннее, вам нужно развернуть его. См. [Это демо] (https://regex101.com/r/aM2cY3/1) - 6 шагов против 30. –