在Ruby正则表达式中组合多个\标志(\ A,\ w)

时间:2015-07-14 19:58:30

标签: ruby regex

我尝试仅从下面的示例中捕获案例b和d(即。END应该是一行中的唯一单词(或者至少是不是较长单词的一部分,并且END应该在开头line(不一定是^,可以从第2列开始,case \ i。) 在一个正则表达式中我无法将所有这些组合在一起,我可以在正则表达式中使用超过1个标志吗?在这个正则表达式中我也需要这个OR。 谢谢大家。 中号

regexDrop = /String01|String2|\AEND/i        #END\n/i
a = "the long END not begin of line"
b = "ENd"              # <@><<  need  this one
c = "END MORE WORDs"
d ="  EnD"            # <@><<  need  this one

if a =~ regexDrop then  puts "a__Match: " + a     else  puts 'a_'     end
if b =~ regexDrop then  puts "b__Match: " + b     else  puts 'b_'     end
if c =~ regexDrop then  puts "c__Match: " + c     else  puts 'c_'     end
if d =~ regexDrop then  puts "d__Match: " + d     else  puts 'd_'     end

##  \w  Matches word characters.
## \A          Matches beginning of string.  (could be not column 1)

1 个答案:

答案 0 :(得分:1)

请注意\A是一个锚(一种内置的lookehind,或“零宽度断言”),它匹配整个字符串的开头。\w是一个简写类匹配字母,数字和下划线(字符)。

根据您的描述以及示例输入和预期输出判断,我认为您只是在字符串中的任何位置查找END作为整个单词并且不区分大小写。

您可以将实例与

匹配
regexDrop = /String01|String2|\bEND\b/i

这是demo

输出:

a__Match: the long END not begin of line
b__Match: ENd
c__Match: END MORE WORDs
d__Match:   EnD