2

 通常のスペースを含む文字列を含む変数を指定して、文字列を非改行スペース ( ) と一致させようとしています。私が探している文字列は、HTML リンク/アンカー内のテキストであり、Watir を使用しています (非改行スペースに注意してください)。

<a onlick='DoSomthing()' href=''>Some&nbsp;Text</a>

// によって作成された正規表現と Regex.new によって作成された正規表現には違いがあるようです。

Interactive Ruby は次のように述べています (ここで my_text = 'Some Text'):

/Some Text/ == Regexp.new(my_text)

しかし、これは True を返します:

browser.link(:text, /Some Text/).exists?

これはしません:

browser.link(:text, Regexp.new(my_text)).exists?

これもありません:

browser.link(:text, /#{my_text}/).exists?

また、運が悪いので次のことを試しました:

Regexp.new(my_text.gsub(' ', '[[:space:]]'))

この試合を達成する方法を知っている人はいますか?

4

2 に答える 2

1

非分割スペースは html エンティティであり、正規表現の afaik はそれをスペースとして認識しないため、一致する前にどちらか一方を変換する必要があります。

my_text = 'Some&nbsp;Text'

つまり、正規表現がスペースを「 」に一致させることはないと思います。検索文字列またはソーステキストのどちらか簡単な方を変更してください...

于 2013-07-12T20:10:27.340 に答える
1

交互に使用:

browser.link(:text, / |&nbsp;/).exists?

また、Ruby と gem をアップグレードしてみてください。Watir で奇妙な正規表現の問題が魔法のように解決されると聞いたことがあります。

于 2013-07-12T20:12:01.420 に答える