Ruby正则表达式和字符串变量

Ruby正则表达式和字符串变量,ruby,regex,watir,Ruby,Regex,Watir,我试图将一个字符串与一个不间断的空格()进行匹配,给定一个变量,该变量包含一个带有规则空格的字符串。我要查找的字符串是HTML链接/锚中的文本,我使用的是Watir(注意非中断空格) 然而,尽管这一点是正确的: browser.link(:text, /Some Text/).exists? 这并不是: browser.link(:text, Regexp.new(my_text)).exists? 这也不是: browser.link(:text, /#{my_text}/).exists

我试图将一个字符串与一个不间断的空格(
)进行匹配,给定一个变量,该变量包含一个带有规则空格的字符串。我要查找的字符串是HTML链接/锚中的文本,我使用的是Watir(注意非中断空格)

然而,尽管这一点是正确的:

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:]]'))

有人知道我如何完成这个匹配吗?

非中断空格是一个html实体,而regex afaik不将其识别为空格,因此在匹配之前需要转换其中一个

my_text = 'Some Text'
换句话说,我认为正则表达式永远不会将空格与“”匹配。更改搜索字符串或源文本,以较容易的为准…

使用替换:

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

另外,尝试升级Ruby和gems。我听说Watir中奇怪的正则表达式问题就是这样神奇地解决的。

如果你创建一个只有一个链接的页面,上面的尝试有效吗?当我尝试它们时(在Firefox上使用watir webdriver时),它们对我起了作用。我在其他地方看到[[:space:]会起作用。我不知道它是否应该/不应该。疯狂的是/Some Text/工作正常,但只要我在变量中插入“Some Text”,它就不工作了。我刚刚发现这个问题显然与Regex无关。问题的根源在于将字符串常量传递给方法。我将分别发布该问题。谢谢你的建议。据我所知,这是IDE(RubyMotion)中的一个小故障。我以前使用的完全相同的代码现在产生了不同的结果。虽然Regex/Watir可以很好地匹配一个正则空间(现在),但我将此标记为答案,因为将空间替换为“(|)”似乎更健壮。
my_text = 'Some Text'
browser.link(:text, / | /).exists?