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

追加情報-Languaugeの独立した正規表現が必要です。

どうもありがとう

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 に答える