这个字符串的Ruby正则表达式?

这个字符串的Ruby正则表达式?,ruby,regex,string,Ruby,Regex,String,我正在尝试获取字符串中的第一个单词:Basic 11/17/2011-12/17/2011 所以最终想要从中得到基本的东西 其他示例字符串:Premium 11/22/2011-12/22/2011 格式总是一个单词后跟括号中的日期范围,我只需要一个单词。你不需要regexp,你可以使用 str.split(' ')[0] 您不需要regexp,只需使用 str.split(' ')[0] 使用以下命令: str = "Premium (11/22/2011 - 12/22/2011)" s

我正在尝试获取字符串中的第一个单词:Basic 11/17/2011-12/17/2011

所以最终想要从中得到基本的东西

其他示例字符串:Premium 11/22/2011-12/22/2011


格式总是一个单词后跟括号中的日期范围,我只需要一个单词。

你不需要regexp,你可以使用

str.split(' ')[0]

您不需要regexp,只需使用

str.split(' ')[0]
使用以下命令:

str = "Premium (11/22/2011 - 12/22/2011)"
str.split.first # => "Premium"
如果未指定任何参数,拆分将使用“”作为默认参数。 之后,使用first获取第一个元素使用以下命令:

str = "Premium (11/22/2011 - 12/22/2011)"
str.split.first # => "Premium"
如果未指定任何参数,拆分将使用“”作为默认参数。
然后,获取第一个元素的第一个

此正则表达式将匹配第一个单词,但不带尾随空格

"^\w+ ??"

此正则表达式将匹配第一个不带尾随空格的单词

"^\w+ ??"

如果您确实需要正则表达式,则可以在使用此正则表达式后获得第一个组:

(\w*) .*

如果您确实需要正则表达式,则可以在使用此正则表达式后获得第一个组:

(\w*) .*

我知道你找到了你需要的答案,但万一将来有人无意中发现,为了从一个未知长度的大字符串中提取所需的值:

word_you_need = s.slice(/(\b[a-zA-Z]*\b \(\d+\/\d+\/\d+ - \d+\/\d+\/\d+\))/).split[0]

我知道你找到了你需要的答案,但万一将来有人无意中发现,为了从一个未知长度的大字符串中提取所需的值:

word_you_need = s.slice(/(\b[a-zA-Z]*\b \(\d+\/\d+\/\d+ - \d+\/\d+\/\d+\))/).split[0]

单字后跟括号内的日期范围

应该更好地定义“word”和“括号内的日期范围” 根据您的要求声明,它们应该是锚和/或测力仪

这些原始正则表达式只是一般的猜测

\w+(?=\s*\([^)]*\))


单字后跟括号内的日期范围

应该更好地定义“word”和“括号内的日期范围” 根据您的要求声明,它们应该是锚和/或测力仪

这些原始正则表达式只是一般的猜测

\w+(?=\s*\([^)]*\))


实际上,您所需要的只是:

s.split[0]
……或者

s.split.first

实际上,您所需要的只是:

s.split[0]
……或者

s.split.first


这将返回第一个单词,无论它是否出现在括号内的日期范围之前。它还假设所需字符串出现在字符串的开头。当日期参数不在字符串中时会发生什么情况?这将返回第一个单词,无论它是否出现在括号内的日期范围之前。它还假设所需的字符串出现在字符串的开头。当日期参数不在字符串中时会发生什么?您是否在任意文本段中搜索该结构?当前的问题措辞为您提供了在Basic 2011年11月17日-2011年12月17日中查找Basic的答案。您是否在任意一段文本中搜索该结构?当前的问题措辞为您提供了在2011年11月17日-2011年12月17日的基础课程中查找基础课程的答案。\b.\b本身与2011年11月17日-2011年12月17日的基础课程相匹配,甚至与基础培训相匹配。这一点很好。我已将\b.*\b更改为\b[a-zA-Z]*\b。因此,除非指定的单词有连字符或任何其他特殊字符,否则这应该有效。为什么不只是/\S*\S+\\d+\/\d+\/\d+-\d+\/\d+\/\d+\/然后呢?\b.*\b本身就匹配基本的2011年11月17日-2011年12月17日,甚至是\b.\b匹配基本的训练。这一点很好。我已将\b.*\b更改为\b[a-zA-Z]*\b。因此,除非指定的单词有连字符或任何其他特殊字符,否则应该可以使用。为什么不使用/\S*\S+\\d+\/\d+\/\d+-\d+\/\d+\/\d+\/然后呢?这个方法中的日期参数在哪里?例如:Premium 11/22/2011-12/22/2011.split。首先,我认为他需要变量输入。你怎么知道括号中的日期范围在哪里?这个方法中的日期参数在哪里?比如:Premium 11/22/2011-12/22/2011.split.first我想他需要变量输入。你怎么知道括号中的日期范围在哪里?这与只包含一个空格的字符串相匹配。正则表达式中唯一需要的是空格,其他所有内容都是可选的。因此,带有单个空格的字符串与正则表达式中的空格匹配。即使“.”将匹配一个空格,但在本例中它将不匹配。哦,我想你是说它将不匹配一个具有多个空格的字符串。是的,它确实匹配由单个空格组成的字符串。但是,在这个问题的上下文中,正则表达式的目标是使用括号提取输入字符串的一部分,而不是验证它——问题的最后一行表明我们假设它是有效的。您已经验证了一个只包含一个空格的字符串,但没有返回任何数据。如果目标是不验证,而是获取数据,那么\w+将比\w**更进一步。这匹配一个只包含一个空格的字符串。正则表达式中唯一需要的是空格,其他所有内容都是可选的。因此,带有单个空格的字符串与正则表达式中的空格匹配。即使“.”将匹配一个空格,但在这种情况下它将不匹配。哦,我以为你
这里说的是,它将不匹配一个具有多个空格的字符串。是的,它确实匹配由单个空格组成的字符串。但是,在这个问题的上下文中,正则表达式的目标是使用括号提取输入字符串的一部分,而不是验证它——问题的最后一行表明我们假设它是有效的。您已经验证了一个只包含一个空格的字符串,但没有返回任何数据。如果目标是不验证,而是获取数据,那么\w+将比\w*更进一步*