1

次の URI を使用します。

http:\/\/.*\.google\.com/search/results\.php*

特定の URI 内の 2 つの英数字の間の単一のスラッシュ ( / ) をすべて一致させようとしているだけです。上記の場合、検索と結果の直前の 2 つです。正しい方向に私を向けることができますか?

編集

意図は、メモ帳++を使用して検索と置換を行うことです。

4

2 に答える 2

1

「URI」はすでに正規表現のように見えるため、そこで何をしているのかよくわかりません。

ただし、/英数字の間に埋め込まれたスラッシュ ( ) を一致させるには、次を使用できます。

/(?<=[a-zA-Z0-9]/)(?=[a-zA-Z0-9])

肯定的な後読みと先読みにより、スラッシュが実際に 2 つの英数字の間にあることが確認されます。

Windows PowerShell でテストします。

PS Home:\> $uri='http://stackoverflow.com/questions/2259778/simple-regex-url-related-matching-help'
PS Home:\> [regex]::matches($uri, '(?<=[a-zA-Z0-9])/(?=[a-zA-Z0-9])') | ft -auto

Groups   Success   Captures   Index   Length   Value
------   -------   --------   -----   ------   -----
{/}         True   {/}           24        1   /
{/}         True   {/}           34        1   /
{/}         True   {/}           42        1   /

ETA:私の理解が正しければ、2 つの英数字の間に埋め込まれたスラッシュ\/をエスケープするために に置き換えたいと思われますよね?

次に、以下を置き換えます

([a-zA-Z-0-9])/([a-zA-Z-0-9])

\1\\/\2

動作するはずです。これはスラッシュのみをキャプチャするわけではありません (上記の方法のように、Notepad++ の制限のため)。そのため、周囲の文字も再挿入する必要があります。

ただし、いずれにせよ、エスケープされていないスラッシュを検索する必要があるでしょう。だから交換

([^\\])/

\1\\/

より理にかなっていると思います。これは、バックスラッシュが前にないスラッシュを検索します。

于 2010-02-14T01:11:44.770 に答える
1

http://. .google.com/search/results.php

于 2010-02-14T01:17:46.620 に答える