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 和 gems。我听说 Watir 中奇怪的正则表达式问题以这种方式神奇地解决了。

于 2013-07-12T20:12:01.420 回答