В настоящее время я пишу регулярное выражение для соответствия строк, таких как это:
( 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
Это может быть ваше простое регулярное выражение:
[^|]+
-захватить один или несколько символов, пока не достигнете «|» (или конец строки)
Или же вы можете использовать String.split («|»);
String line = "term * factor | factor";
String[] split = line.split("\\|");
Других решений пока нет …