2

私は本当にRegExの初心者であり、助けが必要です。

多くの URL やその他のテキストを含む長い文字列があり、URL の 1 つに /find/ が含まれています。すなわち:

1. http://www.example.com/not/index.html
2. http://www.example.com/sat/index.html
3. http://www.example.com/find/index.html
4. http://www.example.com/rat/mine.html
5. http://www.example.com/mat/find.html

そのリストの 3 番目の URL を返し、5 番目の URL も返さないには、どのような正規表現を使用すればよいでしょうか? 基本的に私が探しているのは、特定の文字セットと / を含む単語全体を順番に返す方法だと思います。

ティア

4

3 に答える 3

2

I would assume you want preg_match("%/find/%",$input); or similar.

EDIT: To get the full line, use:

preg_match("%^.*?/find/.*$%m",$input);
于 2012-08-06T22:46:18.110 に答える
1

RegExrを使用して正規表現を生成することをお勧めします。

サンプル リスト (上記のようなもの) を入力し、パレットを使用して RegExp を作成し、リアルタイムでテストすることができます。このプログラムは、オンラインおよびダウンロード可能な Adob​​e AIR パッケージとして入手できます。

残念ながら現在サイトにアクセスできないので、ダウンロード版のAIRパッケージを添付します

私のような RegExp 初心者が最も複雑なパターンを設計するのにも役立ったので、これを本当にお勧めします。

ただし、あなたの質問については、

\/find\/

はい/いいえの結果を取得したい場合 (つまり、 が含まれているかどうか/find/)、それ以外の場合は、完全な行を使用して取得する場合に適しています

.*\/find\/.*
于 2012-08-06T23:16:50.937 に答える
0

Kolinkの回答に加えて、正規表現をURI全体に一致させたい場合は、次のようにします。

これは、URIの完全な正規表現ではありませんが、開始点としては適切です。、、、など.comの重要なポイントでいくつかのオプションを投入しました。実際には、適合性がないため、URIを正規表現と照合するのはかなり困難ですが、非常に近づくことができます。.net.org

上記のリンクからの正規表現:

/(https?:\/\/)?(www\.)?([a-zA-Z0-9-_]+)\.(com|org|net)\/(find)\/([a-zA-Z0-9-_]+)\.(html|php|aspx)?/is

于 2012-08-06T22:58:27.433 に答える