匹配没有空格的单词,必须包括单词的某些开头

时间:2017-09-18 07:46:47

标签: ruby regex

我正在尝试匹配

驱动程序。在

def fun
    driver.find_element(:link_text, "Standard Menu Rates").click
    driver.find_element(:id, "jpform:fromStation").send_keys("HOSUR - HSRA")
    @driver.find_element(:id, "jpform:toStation").send_keys("SATUR - SRT")

所以我必须编写以下正则表达式

^driver.

但司机。在这个词前面有一些空间,所以它不匹配,我怎么能消除空间以及坚持字符串的开头作为驱动程序而不是@driver或没有任何其他字?

输入

def fun
    driver.find_element(:link_text, "Standard Menu Rates").click
    driver.find_element(:id, "jpform:fromStation").send_keys("HOSUR - HSRA")
    @driver.find_element(:id, "jpform:toStation").send_keys("SATUR - SRT")

输出

    driver.find_element(:link_text, "Standard Menu Rates").click
    driver.find_element(:id, "jpform:fromStation").send_keys("HOSUR - HSRA")

而且,

我知道要匹配""但是我如何匹配双引号之外的那些词呢?

输入

# 0 = {String@3546} "Policy Duration (Days)"
# 1 = {String@3547} "Related Proposal Nr."

输出

# 0 = {String@3546} 
# 1 = {String@3547} 

2 个答案:

答案 0 :(得分:2)

根据您的评论,您希望匹配行的开头,然后匹配同一行中的任意数量的空格,然后driver然后点。

您需要使用[[:blank:]]*(它将匹配任何0 + Unicode水平whitesdace字符)。另请注意,.应转义为与文字.匹配。

使用

/^[[:blank:]]*driver\./

请参阅Rubular demo

<强>详情

  • ^ - 开始行
  • [[:blank:]]* - 0+ 水平空白字符
  • driver - 文字子字符串
  • \. - 一个点。

对于第二部分,您可以使用

从字符串中删除"..."子字符串
s.gsub(/[[:blank:]]*"[^"]*"$/, '')

请参阅此Rubular demo

或者,如果您希望匹配 行部分直到第一个",您可以使用

/^[^"\r\n]+/

请参阅this Rubular demo

答案 1 :(得分:1)

你可以使用正则表达式

^\s*\bdriver\.

其中\ b表示边界。检查regex101 demo

对于第二部分,您可以替换引号内的字符串。剩余的字符串将是必需的字符串,请参阅regex101 demo