Perl正则表达式,寻求SKU号

时间:2012-06-19 19:16:24

标签: regex perl ack

我正在尝试使用ack解析一堆PHP代码。我对正则表达式缺乏经验,并试图弄清楚为什么我当前使用的东西不会像我期望的那样工作。

我试图找到PHP文件中与模式匹配的所有行:

字符串“SKU”,后跟任意数量的任何字符,后跟实际的SKU(不确定长度的数字序列)。

我的正则表达式目前是:

SKU.*[0-9]*

但是这匹配了许多字符串,这些字符串并不适合我正在寻找的模式,例如

SKUs</h3>SKU',

我也尝试过:

SKU(.*)([0-9]*)

无济于事。

那里的任何大师都有一些见解?提前谢谢。

1 个答案:

答案 0 :(得分:2)

所有(几乎)正确:

SKU.*[0-9]+

如果您希望在重新结束时至少有一个数字,则必须使用+代替*。

说实话并不完全清楚任何字符是什么意思。如果你真的是指任何角色,那么你必须使用.*,但如果没有,你必须更具体地说出你想要找到的东西。

此外,您可能需要非贪婪的搜索模式:

SKU.*?[0-9]+

这意味着:一旦面对第一个号码就停止。