正则表达式得到象棋pgn子变种

时间:2015-02-04 10:51:12

标签: regex chess

我想在“(”和“)”符号之间加上正则表达式。

[Date "????.??.??"]
[Result "*"]
[FEN "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1"]

1.e4 c5 2.Nf3 Nc6 ( 2...d6 3.d4 ( 3.c3 Nc6 4.d4 ) ) ( 2...e6 3.d4 d5 ) 
*

这是一个简短的例子,可以更长

但是那样

( 2...d6 3.d4 ( 3.c3 Nc6 4.d4 ) )
( 2...e6 3.d4 d5 )

rexeg模式通常返回`

( 2...d6 3.d4 ( 3.c3 Nc6 4.d4 ) ) ( 2...e6 3.d4 d5 )

因为找到了最后的“)”

我不知道如何编写使这个工作的正则表达式模式。是否有人可以帮助我

1 个答案:

答案 0 :(得分:1)

您需要使用递归正则表达式模式,以便检查括号的平衡。

\((?:(?R)|[^()])*\)

DEMO