Regex 正则表达式来匹配两个字符串之间的无限重复模式

Regex 正则表达式来匹配两个字符串之间的无限重复模式,regex,Regex,我有一个中间有重复模式的数据集: YM10a15b5c27 及 我怎样才能得到YM和最后两个数字之间的值 我正在使用这个,但最终得到一个数字,不应该 /[A-Z]+[0-9a-Z]+[0-9]+/您应该使用: /^(?:([a-z]+))([0-9a-z]+)(?=\1)/ ^匹配句子的开头。这一点非常重要,因为如果您的代码是aaaa1234aaaa,那么如果没有^,它也将匹配末尾的aaaa ?:[a-z]+是一个非捕获组,它将从“a”到“z”的任何字母作为组1 ?=\1告诉正则表达式匹配文

我有一个中间有重复模式的数据集:

YM10a15b5c27

我怎样才能得到YM和最后两个数字之间的值

我正在使用这个,但最终得到一个数字,不应该

/[A-Z]+[0-9a-Z]+[0-9]+/

您应该使用:

/^(?:([a-z]+))([0-9a-z]+)(?=\1)/
^匹配句子的开头。这一点非常重要,因为如果您的代码是aaaa1234aaaa,那么如果没有^,它也将匹配末尾的aaaa

?:[a-z]+是一个非捕获组,它将从“a”到“z”的任何字母作为组1

?=\1告诉正则表达式匹配文本,只要在开始时后跟相同的代码

您所要做的就是按group2提取代码


.

在最后一组中准确捕获两个字符:

/([A-Z]+)([0-9a-z]+)([0-9]{2})/
解决方案 如果要将这些字符串作为整个单词进行匹配,请使用。如果需要将它们作为单独的字符串进行匹配,请使用

解释 \b-单词边界,如果使用了“^”,则为字符串的开头 [a-z]\2-第1组:任何小写ASCII字母,正好两次出现aa、bb等。 [0-9a-z]+-第3组:1个或多个数字或小写ASCII字母 \1-第4组:与第1组中存储的文本相同 \b-单词边界,如果使用$,则为字符串结尾。
谢谢,但是aa可以是任何字母[a-z]。我该怎么做?你想aa是任何类似字母的字符串,还是仅仅两个类似的字母?它应该从ddd1234codeddd中得到1234code还是D1234编码?我看不到字符串1中有任何重复,而在字符串2中只有1重复。从YM10a15b5c27中,我应该得到10a15b5c。如果我使用/[a-Z]+[0-9a-Z]+[0-9]+/,我想我会在结尾使用一个数字,它将得到10a15b5c2,但我想要10a15b5c
/([A-Z]+)([0-9a-z]+)([0-9]{2})/