2

我希望从字符串中提取所有内容,但在遇到斜杠后的数字后忽略所有内容(允许使用字母数字)

例子:

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]+)?(.*)

附加信息 - 需要语言独立的正则表达式。

非常感谢

4

2 回答 2

1

Perl 中的示例:

echo "http://...." | perl -pe 's/(.*\/)\d+\/.*/$1/'

或者:

echo "http://...." | perl -ne 'print "$1\n" if /(.*\/)\d+\/.*/'

编辑: @creinig 在他的评论中指出的是真实的 - 没有通用正则表达式之类的东西。尽管如此,Perl 被广泛使用,因此它是一种选择。

于 2013-03-14T10:18:32.400 回答
1

这应该适用于大多数语言,并且应该产生所需的输出

(http://.*)(?=/\d+(?!\w+))

它需要每个字符,直到找到(前瞻)\ 后跟一个数字。

如果你尝试匹配

http://www.test.com/products/123abc/
or
http://www.test.com/products/123abc

它只是找不到匹配项,您可以确定检查的字符串在斜杠后没有遇到纯数字

于 2013-03-14T10:21:52.810 回答