2015-08-11 2 views
0

Могли бы вы предоставить регулярное выражение для соответствия назначений в текстеява назначение регулярных выражений

$one: 3-2; $three: 4-1; 4 
$one: 3-2 

Я попытался \$\w+:.+?;? и ожидать, что она соответствует $one: 3-2; и $one: 3-2.
Но это соответствует только $one:

Что мне не хватает?

ответ

1

Думаю, вы имели в виду это,

\$\w+:[^;]*;? 

В Java.

"\\$\\w+:[^;]*;?" 

Вашего регулярное выражение соответствует ДО первого места это в основном из-за не жадный паттерн и следующей дополнительной точка с запятой.

0

Вы можете использовать это регулярное выражение:

\$\w+:\s*([^;]+) 

RegEx Demo

В Java это будет:

"\\$\\w+:\\s*([^;]+)" 
+0

Могу ли я узнать причину понижающей передачи? – anubhava

+0

Вопрос сформулирован как его школьное задание, которое не работает. Возможно, именно поэтому ваш ответ забирается вниз, потому что кажется, что вы используете ложку. – Sid

+0

На самом деле это не похоже на школьное задание. Я предположил, что OP говорит о присвоении переменной, например. '$ one: 3-2'. – anubhava

1
\$\w+:.+?(?:;|$) 

Вы должны использовать это с multi line mode.Yours не работает сог ; не является обязательным и .+? является не жадный так он остановится, потребляя только один символ, поскольку он имеет возможность игнорировать ;

См. Демонстрацию.

https://regex101.com/r/eX9gK2/8

Смежные вопросы