正则表达式匹配一个字符串

时间:2013-12-07 21:04:55

标签: c++ regex string dfa nfa

我目前正在编写一个正则表达式来匹配这样的字符串:

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

我希望正则表达式匹配每个'|之间出现的每组字符',但也匹配独奏表达式,如:

expr

我目前有这个,但我做了我的负面预测错误,我不确定如何继续。

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

P.S。我并不是真的喜欢在这种情况下使用。*但是我想不出另一种匹配方式,因为'|之间的字符'|可以是单词字符,数字或其间的任何内容。

编辑:

我希望输出匹配看起来像这样:

正则表达式在第1行跑,输出:

3 matches - ( expor ), id, num

正则表达式第2行:

2 matches - term * factor, factor

正则表达式第3行:

1 match - expr

1 个答案:

答案 0 :(得分:0)

这可能是你的简单正则表达式:

[^|]+

- 捕获一个或多个字符,直到达到“|” (或字符串结尾)

或者你可以使用String.split(“|”);

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