Регулярное выражение для полной строки после auto vue .classpath = в текстовом файле - PullRequest
1 голос
/ 27 января 2020

В моем файле есть следующий текст

auto vue .bindir = C: \ Program Files (x86) \ AV \ bin \

auto vue .classpath = C: \ Program Files (x86) \ AV \ bin \ j vue .jar; C: \ Program Files (x86) \ AV \ bin \ jvueserver.jar; C: \ Программные файлы (x86) \ AV \ bin \ jsonrpc4j.jar; C: \ Program Files (x86) \ AV \ bin \ log4j-api.jar; C: \ Программные файлы (x86) \ AV \ bin \ jackson.jar; C: \ Program Files (x86) \ AV \ bin \ stax2-api-4.2.jar; C: \ Program Files (x86) \ AV \ bin \ woodstox-core-5.2.0. jar; C: \ Program Files (x86) \ AV \ bin \ log4j-core.jar; C: \ Program Files (x86) \ AV \ bin \ log4j-web.jar; C: \ Program Файлы (x86) \ AV \ bin \ jackson.jar; C: \ Program Files (x86) \ AV \ bin \ stax2-api-4.2.jar; C: \ Program Files (x86) \ AV \ bin \ woodstox-core-5.2.0.jar; C: \ Program Files (x86) \ AV \ bin \ jogl.jar; C: \ Program Files (x86) \ AV \ bin \ gluegen-rt.jar ; C: \ Program Files (x86) \ AV \ bin \ SmartMarkupListener.jar auto vue .jre = C: \ Program Files (x86) \ AV \ jre \ bin \ java .exe

Я ни d для получения значения auto vue .classpath означает строку после auto vue .classpath = "..." до пробелов (то есть) следующей строки.

Я пытался с

MatchCollection matched=Regex.Matches(contents,@"classpath=\s*")

&

MatchCollection matched=Regex.Matches(contents,@"classpath=[A-Za-z-0-9]\w+")

, но не получил ожидаемого.

Что должно быть регулярным выражением для этого на C# языке.

Ожидаемый результат :

C: \ Program Files (x86) \ AV \ bin \ j vue .jar; C: \ Program Files (x86) \ AV \ bin \ jvueserver.jar ; C: \ Program Files (x86) \ AV \ bin \ jsonrpc4j.jar; C: \ Program Files (x86) \ AV \ bin \ log4j-api.jar; C: \ Program Files (x86 ) \ AV \ bin \ jackson.jar; C: \ Program Files (x86) \ AV \ bin \ stax2-api-4.2.jar; C: \ Program Files (x86) \ AV \ bin \ woodstox- core-5.2.0.jar; C: \ Program Files (x86) \ AV \ bin \ log4j-core.jar; C: \ Program Files (x86) \ AV \ bin \ log4j-web.jar; C: \ Program Files (x86) \ AV \ bin \ jackson.jar; C: \ Program Files (x86) \ AV \ bin \ stax2-api-4.2.jar; C: \ Program Files ( x86) \ AV \ bin \ woodstox-core-5.2.0.jar; C: \ Program Files (x86) \ AV \ bin \ jogl.jar; C: \ Program Files (x86) \ AV \ bin \ gluegen-rt.jar; C: \ Program Files (x86) \ AV \ bin \ SmartMarkupListener.jar

Ответы [ 3 ]

2 голосов
/ 27 января 2020
Match match = Regex.Match(contents, @"(?<=autovue.classpath=)[^\r\n]+");

Объяснение:

(?<=autovue.classpath=) является положительным следом за текстом autovue.classpath=. Это не включено в результат матча.

[^\r\n]+ затем сопоставляет любое количество символов, которое не является переводом каретки или новой строкой, для включения в матч.

0 голосов
/ 27 января 2020
var match = Regex.Match(text, @"autovue.classpath=(.*)$", RegexOptions.Multiline);

найдет текст между autovue.classpath= и концом строки. Вы можете получить к нему доступ match.Groups[1].

0 голосов
/ 27 января 2020

Если вы хотите получить текст только между autovue.classpath и следующей точкой с запятой (например, C:\Program Files (x86)\AV\bin\jvue.jar, тогда:

MatchCollection matched = Regex.Matches(contents, @"(?<=autovue\.classpath=).+?(?=;)");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...