0

特定の文字列からすべての URL を置き換える正規表現がありました。

my_string = "www.example.com test www.mysite.com"
my_string.gsub!(/[a-zA-Z0-9\-\.]+\.(com|net|de|org|uk|biz|info|co.uk|es|de)(\/\S*)?/i,'(site hidden)')

上記の結果として、「(サイト非表示)テスト(サイト非表示)」が得られます

www.mysite.com を置き換えないように正規表現を変更するにはどうすればよいですか ???

これは、置換が「(サイト非表示) テスト www.mysite.com」を出力する必要があることを意味します。

ありがとう !

4

2 に答える 2

3

ブルートフォースはどうですか?:)

my_string = "www.example.com test www.mysite.com"

regex = /[a-zA-Z0-9\-\.]+\.(com|net|de|org|uk|biz|info|co.uk|es|de)(\/\S*)?/i

uniq  = rand(2**1024).to_s

p my_string.gsub('mysite.com', uniq).gsub(regex, '(site hidden)').gsub(uniq, 'mysite.com')

ライブデモはこちら

于 2012-11-20T04:48:59.883 に答える
1

許可されたエントリのリストにある場合は、元のテキストを使用して、ブロックを使用して置換を生成できます。

my_string = "www.example.com test www.mysite.com"
allowed = %w(www.mysite.com)
re = %r/[a-zA-Z0-9\-\.]+\.(com|net|de|org|uk|biz|info|co.uk|es|de)(\/\S*)?/i
my_string.gsub!(re) do
  |m| allowed.include?(m) ? m : '(site hidden)'
end
puts my_string
于 2012-11-20T05:06:11.723 に答える