我希望从字符串中提取所有内容,但在斜线后遇到数字后忽略所有内容(允许使用字母数字)
示例:
http://www.test.com/products/cards/product_code100/12345/something_else
http://www.test.com/products/123abc/45678/
期望的输出 -
http://www.test.com/products/cards/product_code100/
http://www.test.com/products/123abc/
以下正则表达式为我提供了反向引用的所有内容,但如果我可以在斜杠后删除数字,那么它会很棒 -
^(.*:)//([a-z\-.]+)(:[0-9]+)?(.*)
其他信息 - 需要支持Languauge的正则表达式。
非常感谢
答案 0 :(得分:1)
Perl中的示例:
echo "http://...." | perl -pe 's/(.*\/)\d+\/.*/$1/'
或:
echo "http://...." | perl -ne 'print "$1\n" if /(.*\/)\d+\/.*/'
编辑: @creinig在评论中指出的是 - 没有通用正则表达式这样的东西。尽管如此,Perl被广泛使用,因此它是一种选择。
答案 1 :(得分:1)
这应该适用于大多数语言,并且应该产生所需的输出
(http://.*)(?=/\d+(?!\w+))
它会占用每个字符,直到找到(lookahead)\后跟一个数字。
如果您尝试匹配
http://www.test.com/products/123abc/
or
http://www.test.com/products/123abc
它只是找不到匹配,你可以确定检查的字符串在斜杠后没有遇到纯数字