2017-06-21 10 views
0

を禁止:正規表現 - だから私正規表現する新たなんだ、これと一致します正規表現を記述しようとしている特定の文字列に

example.com/some-url-text-here/ 

なく

example.com/some-url-text/but-also-more-than-two-slashes/ 
example.com/text-here/one-slash-too-many/two-slashes-too-many/ 

のようなもの基本的に、私は希望string-separated-by-dashesに囲まれたURLと一致するものは2つまでです。/です。

私が試した最後のものは、このでした.... negative look aroundまたはnotのような異なった物事のカップルを試してみました:

example\.com/[a-zA-z]*-*/ 

[a-zA-z]*-*text-hereのようなものと一致したが、私はそれが/text-here/に一致するように取得することはできません。この場合、私は間違って何をしていますか?

答えて

1

あなたの正規表現が機能していない理由はので、あなたがそれを持っているためである

example\.com/[a-zA-z]*-*/ 

これは、テキストの上部とそれ以降のハイフンを検索しています。ただ、そのようなカッコ内のハイフンが含ま:lookaheadと以下

example\.com/[a-zA-z-]*/ 
+0

Ohhh ...それは私の愚かな間違いだった。明確にしてくれてありがとう! – ocean800

1

regexenに問題がある場合は、単にsplit"/"とすると、要素が空ではなく(おそらく最後の部分を除く)、要素が3つ以下であることを確認してください。

あなたは、最後の要素が分割されていることを確認するために、パラメータとして-1を使用することができます。

>>> "some/url//".split("/", -1) 
['some', 'url', '', ''] 
+0

思わなかった後に来ないアサートされますそのアプローチの、答えのおかげで! – ocean800

2

トライ正規表現を、それはより多くのバックスラッシュは、第二

example\.com\/[a-zA-Z-]+[a-zA-Z]\/(?!.*\/)

demo

+0

ああ、それは先読みとどのように動作するかを示してくれてありがとう!上の正規表現の場合、私はちょうど '$'を最後に置いています:) – ocean800

関連する問題