gpt4 book ai didi

ruby - 正则表达式根据之前匹配的内容匹配某些内容

转载 作者:数据小太阳 更新时间:2023-10-29 07:37:49 25 4
gpt4 key购买 nike

我正在尝试编写一个正则表达式来验证 algebraic chess notation 中的移动.这是我到目前为止所拥有的:

/
O-O(-O)? # Castling
|[KQRBN]x?[a-h][1-8]\+? # Most normal moves and captures
/

我迷路的地方是典当推广。

骑士、主教或中央兵只能在其开始的文件或通过捕获在任一侧的文件上升级。车兵可以通过直线移动或向一侧捕获来提升,具体取决于它是在 a 档还是 h 档。所以像

/[a-h](x[a-h])?[18]=[QRBN]\+?/

不起作用,因为 fxh8 不是有效着法(只有 fxe8 和 fxg8 是)。我可以走很长的路

/(a(xb)?|h(xg)?|b(x[ac])?.../ # insert 5 more files in place of the ...

但这不是很有效。我想使用分组,这样我就可以做 rook-pawn 和其他所有事情。我有这样的想法:

/([b-g])(x(\1±1))?/

表示“字母 b 到 g 后面可能跟在它们之前或之后的字母”。

最佳答案

使用交替匹配相邻字母并不难,但您不会找到任何紧凑的东西,因为正则表达式中没有字符算术。

有人刚刚发布了 similar question出于对你困境的同情。

路漫漫其修远兮

关于ruby - 正则表达式根据之前匹配的内容匹配某些内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24344875/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com