gpt4 book ai didi

ruby - 匹配与上一组匹配的相同数量的字符

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

基本上,我需要 \k 的组合和 \g .

这是一个例子:

我有 "123045 ; 67089" 形式的字符串.仅当两个数字中相对于数字末尾的相同位置上有重复数字时,我才必须匹配它。在这种情况下,0123045距离数字末尾两个位置,0 也是如此。在 67089 .


问题是,如果我使用反向引用,数字的全部剩余部分必须匹配(又名 4589 ):

^\d*(\d)(\d*) ; \d*\1\2$

如果我使用模式重新执行,我必须给出具体的剩余字符数(在本例中为两个):

^\d*(\d)(\d{2}) ; \d*\1\g<2>$

是的,它必须在一个正则表达式中。

最佳答案

你在这里面临的是一个平衡问题。可以用递归来解决,我的做法是:

^\d*(\d)(?:(\d(?:(\s*;\s*\d*\1)|\g<2>)\d)|\g<3>)$

这会将\s*;\s*\d*\1作为两组平衡数之间的内容。为了摆脱递归,此内容必须恰好匹配一次(以避免像 12212;1;13 这样的匹配)。递归到此内容作为交替是针对双位数是每个数字的最后一位的情况。

你可以找到一些测试用例here

关于ruby - 匹配与上一组匹配的相同数量的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39854400/

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