0

2 つのグループを見つけるための Regex の一致について少し助けが必要です。1 つ目は、URL の最後の 2 番目の「/」と最後の「/」の間の単語と一致する必要があります。2 番目の一致では、URL の末尾にある「-」または最後の「/」の前の数字を見つける必要があります。

例:

1. <a href="/damm/test1/1-4-5-34.html">Test 1</a> 
2. <a href="/damm/test1/test2/22-33-456.html">Test 2</a> 
3. <a href="/damm/test1/test2/test3/2345.html">Test 3</a>

ここで、1はグループ 1 == test1およびグループ 2 == 34
に一致し、 2はグループ 1 == test2およびグループ 2 == 456
に一致し、 3はグループ 1 == test3およびグループ 2 == 2345に一致します。

理解できることを願っています

ありがとうございます

編集 質問は完全な解決策を見つけることではなく、見つけたい特定のグループを見つけるためのヒントを得るためのものでしたが、もちろんジェリーが解決策を教えてくれたことをうれしく思います。

申し訳ありませんが、私はすでに試した作業を投稿していませんでしたので、ここにあります:

私はテストに gskinner RegExr を使用していますが、代わりにこのサイトで例を示すことができますhttp://regex101.com/r/zB3oZ6

これは私が最初に試した場所です

href="(.*?)(\d*).html\"

それは数字を見つけることでうまくいきますが、テキストを取得したいときはすべて崩壊します。私は将来これを見てみます:http://www.regular-expressions.info/tutorial.html

4

3 に答える 3

0

これは機能します:.*/(.*)/.*-?([0-9]+).*

シェルで使用できます:

echo "<a href="/damm/test1/1-4-5-34.html">Test 1</a>" | sed -r "s;.*/(.*)/.*-?([0-9]+).*;\1 \2;"

cfデモ

于 2013-10-28T09:35:02.367 に答える
0

あなたは多分そのようなものを使うことができます...

href=".*?/([^/]*)/[^/]*?([0-9]+)[^0-9]+"

正規表現101のデモ

于 2013-10-28T09:37:56.740 に答える
0

次の正規表現が機能するはずです。

([^/]*)\/(?=[^/>]*>).*?([^.-]+)\.

ライブデモ: http://www.rubular.com/r/jWD8VwkDWy

于 2013-10-28T09:38:18.547 に答える