0

特定のテキストからすべての有効なUnixパスを除外する正規表現を考え出そうとしましたが、どのURL(などhttp://...)とも一致しません。

次のパスはすべて有効です。

/home/username/some_file.txt
/home/username/some_file.longext
"/path/to/file/some file.longext"

ただし、これらのいずれとも一致しないようにする必要があります。

http://www.somelink.com
ftp://www.somelink.co.uk
https://www.somelink.com and so on

私はこれを思いついたが、それはすべてのURLにも一致し、これは私が除外しようとしているものです。

"?[a-zA-Z0-9\/].*\.[a-zA-Z0-9].*"?

編集:入力テキストは実際にはURLが内部にあるファイルのコンテンツであり、有効なUnixパスであるため、正規表現は、一致するURLを除いて、テキスト内の任意のパスで一致できる必要があります。

4

2 に答える 2

2

思いついた解決策はヒューリスティックにすぎないことに注意してください。

cd /tmp
mkdir test
cd test
mkdir http:
cd http:
mkdir www.google.com
cd www.google.com
echo "I'm a file, not a web site" > 'search?q=Unix+path+syntax+double+slash'
cd /tmp/test

そして今、http ://www.google.com/search?q=Unix+path+syntax+double+slashは両方です:URLとファイルへのパス:

cat 'http://www.google.com/search?q=Unix+path+syntax+double+slash'
w3m 'http://www.google.com/search?q=Unix+path+syntax+double+slash'

パス名とは何か、パス名ではないものを知る唯一の確実な方法は、コンテキストを使用することです。の引数catはパス名です。に対する議論w3mはそうではありません。自由形式のテキストでは、作家の母国語を解析せずに、あなたは推測しています。

于 2012-08-12T19:28:34.620 に答える
0

パスが絶対パスであり、パスが存在するかどうかを確認する必要がなく、読み取り可能か類似していると仮定すると、文字列の先頭にあるスラッシュを一致させようとするのと同じくらい簡単に思えます。のように開始する必要があります^"?/。URL を除外するにはこれで十分です。

于 2012-08-12T18:14:35.527 に答える