大家好我尝试搜索网站,但我无法真正找到或理解我正在寻找的正则表达式。
我的常规快递是3-7个字母,然后是SALE或OFF 4年级 然后输入前3个首字母。
例如:hamcookOFF2012ham
我的正则表达式代码是
(适用的regexp = “\ d {3,7}(OFF | SALE)\ d {4}”
这使我能够直到一年,但我怎么能得到前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)$