регулярные выражения Boost C ++ - PullRequest
0 голосов
/ 10 декабря 2011

пытается поймать символы в начале строки и в новой строке строка

.V/1LBOG\n.F/AV0094/08NOV/SAL/Y\n.E/0134249356001"

регулярное выражение, которое я использую, взято из строки выше, мне нужно поймать .V / и .E /

^.[VE]/*

Но это только кажется, что ctach .V / кто-нибудь может понять, почему, как я думал, ^ означает переносы строк, а также начало строк? любая помощь будет очень благодарна, поскольку у меня уже была эта проблема. Если это не правильный путь, как при этом, вы можете предложить другой способ.

Ответы [ 3 ]

0 голосов
/ 10 декабря 2011

Regex 101:

^ означает начало строки. И ты угадал это правильно. Может быть только одно начало строки.

^.[VE]/*

означает:

Соответствует началу строки, после которого следует любой символ (кроме новой строки), затем V или E, а затем от 0 до n / (жадный).

Возможно, вы хотите что-то вроде этого:

\.[VE].*?(?:\\n|$)

Что означает совпадение с точкой, за которой следуют V или E и сопоставление всего до \n или конца строки.

Прокомментируйте, если я ошибаюсь.

Итак .V/1LBOG\n.F/AV0094/08NOV/SAL/Y\n.E/0134249356001"

Похоже на это?

.V/1LBOG
.F/AV0094/08NOV/SAL/Y
.E/0134249356001"

Если да, то вам нужно немного изменить свое регулярное выражение:

\.[VE].*

Злоупотребление тем фактом, что . не соответствует символам новой строки по умолчанию.

0 голосов
/ 10 декабря 2011

. в регулярных выражениях соответствует любому отдельному символу, а не буквальному .. Если вы хотите соответствовать буквальному периоду, вам нужно избежать его (\.). * не соответствует ни одному количеству любых символов (как большинство оболочек), но вместо этого соответствует нулю или большему количеству экземпляров того, что вы положили перед ним. Например, A* будет соответствовать буквенной букве A, AAAA и т. Д., А .* будет соответствовать любой строке.

^ означает начало строки. ^\.[VE]/ будет соответствовать .V/ и .E/ (но только в начале строки).

0 голосов
/ 10 декабря 2011

если вам нужно .V или .E попробуйте ^.(V|E)/* или оператор | полезен для проверки ^.V/* или ^.E/*

...