Регулярное выражение соответствия строки

В настоящее время я пишу регулярное выражение для соответствия строк, таких как это:

( expr ) | id | num
term * factor | factor
expr

Я хочу, чтобы регулярное выражение соответствовало каждому вхождению набора символов между каждым ‘| ‘, но также совпадают сольные выражения, такие как:

expr

В настоящее время у меня есть это, но я неправильно делаю свой негативный взгляд, и я не совсем уверен, как поступить.

((.*) \|) (.*)$

Постскриптум Я не очень люблю использовать. * В этой ситуации, но я не могу придумать другой способ сопоставления, потому что символы между ‘| Это могут быть слова, цифры или что-то среднее между ними.

РЕДАКТИРОВАТЬ:

Я хотел бы, чтобы выходные совпадения выглядели так:

Regex работает в строке 1, вывод:

3 matches - ( expor ), id, num

Regex работает в строке 2:

2 matches - term * factor, factor

Regex работает в строке 3:

1 match - expr

0

Решение

Это может быть ваше простое регулярное выражение:

[^|]+

-захватить один или несколько символов, пока не достигнете «|» (или конец строки)

Или же вы можете использовать String.split («|»);

String line = "term * factor | factor";
String[] split = line.split("\\|");
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]