2016-05-31 13 views
-3

は、私は、HTMLの文字列を持っている:RubyでHTML入力値を置き換える方法は?

string = "<input type=text name='email' value='[email protected]'> <input type=hidden name='pin' value='123'>" 

を私は星*******

"<input type=text name='email' value='*******'> <input type=hidden name='pin' value='123'>" 

emailの値を置き換えたいので、私はこのようなものがあります:

string.gsub(/<input(.*?)name='email'(.*)value='(.*?)'/, '*******') 

https://regex101.com/r/dO1uJ3/2

私の正規表現が無効であることを知っているので、助けを求める。私は鋸山を使用したくない

PS、文字列

+0

downvoter、何が悪いですの? – user2931706

+1

私は落選しませんでしたが、本当に*正規表現ではなく適切なHTMLパーサを使用したいと思っています。このようなコードは、非常に脆い傾向があり、ほとんどのものが変更されても機能しなくなります。引用スタイルを変更する、引用符を忘れる、属性の順序を切り替える、これらすべてのことが起こり得ます。 – tadman

答えて

1

と単なる正規表現はすなわち、その後、交換\1****\2のためにそれらを使用し、交換したいものの前と後のキャプチャグループ(())を作成します。

result = subject.gsub(/('email'\s+value=').*?('>)/i, '\1*****\2') 

https://regex101.com/r/dO1uJ3/1


+0

ありがとう、 '\ 1 **** \ 2'は' \ 1'と '\ 2'の目的は何ですか? – user2931706

+0

'\ 1'と' \ 2'は前に '()'でキャプチャしたキャプチャグループを表します。 –

関連する問題