Mam następujące wyrażenia regularnego:Wykluczenie ostatniego znaku regex meczu
%(?:\\.|[^%\\ ])*%([,;\\\s])
że działa świetnie, ale oczywiście to także podkreśla następny znak do ostatniego %
.
Zastanawiam się, jak mogę wyłączyć to z regex?
Na przykład, jeśli mam:
The files under users\%username%\desktop\ are:
To podkreśli %username%\
ale po prostu chcę %username%
. Z drugiej strony, jeśli mogę zostawić regex tak:
%(?:\\.|[^%\\ ])*%
... to będzie pasować do tego wzoru, że nie chcę, aby:
%example1%example2%example3
Każdy pomysł jak wykluczyć ostatnia postać w meczu przez wyrażenie regularne?
Myślę, że znalazłem rozwiązanie z zupełnie nowym RegEx ... przepraszam za opublikowanie tego zbyt wcześnie! Czyni to, czego potrzebuję ... '% (?: \\.| [^ "% \ d \\]) *%' – user3587624
To wyrażenie nie jest skuteczne, ponieważ masz alternatywną grupę z zastosowanym kwantyfikatorem .Jeśli to nie jest problem (łańcuchy, które masz krótkie), to jest OK. Jeśli mogą być nieco dłuższe, musisz je rozwinąć. Zobacz [to demo] (https://regex101.com/r/aM2cY3/1) - 6 kroków w stosunku do 30. –