正则表达式重复前3个字符

时间:2014-07-26 19:06:10

标签: regex

大家好我尝试搜索网站,但我无法真正找到或理解我正在寻找的正则表达式。

我的常规快递是3-7个字母,然后是SALE或OFF 4年级 然后输入前3个首字母。

例如:hamcookOFF2012ham

我的正则表达式代码是

(适用的regexp = “\ d {3,7}(OFF | SALE)\ d {4}”

这使我能够直到一年,但我怎么能得到前3个字符?

3 个答案:

答案 0 :(得分:2)

您可以使用组(括号中)捕获前3个字母,并按如下方式引用它:

(\D{3})\D{0,4}(OFF|SALE)\d{4}\1

括号中包围的\D{3}将保存在编号为1的组中,反向引用\1指的是此组匹配的任何内容。

注意\D还会匹配逗号或下划线等特殊字符。如果只匹配字母,请使用[a-zA-Z]

答案 1 :(得分:2)

您可以使用backreference来实现此目的,我建议如下:

([a-zA-Z]{3})[a-zA-Z]{0,4}(OFF|SALE)\d{4}\1
  • \1匹配第一个捕获组匹配的相同文本。

注意: \D匹配非数字字符(0-9 以外的所有字符),使用[a-zA-Z]严格匹配字母字符

答案 2 :(得分:0)

您可能正在寻找与前一个捕获组的引用相匹配的正则表达式。下面,\1是第一个捕获组的后向引用(前三个非数字):

^(\D{3})(\D{0,4})(OFF|SALE)\d{4}(\1)$