Regex也会在字符串Ruby的开头捕获某些单词
正在寻找有关编写正则表达式的帮助,以捕获特定字符串是否以特定字符串开头,以及捕获起始字符串和剩余字符串。例如 假设字符串的可能开头为“P”、“RO”、“RPX”,示例字符串为“PIXR”或“ROXP”或“RPX”。 我想写一个正则表达式,如果它以给定的可能字符串开始,它将捕获字符串的开始和结尾部分,例如 'PIXRT'=~//输出'P'和'IXRT'Regex也会在字符串Ruby的开头捕获某些单词,ruby,regex,Ruby,Regex,正在寻找有关编写正则表达式的帮助,以捕获特定字符串是否以特定字符串开头,以及捕获起始字符串和剩余字符串。例如 假设字符串的可能开头为“P”、“RO”、“RPX”,示例字符串为“PIXR”或“ROXP”或“RPX”。 我想写一个正则表达式,如果它以给定的可能字符串开始,它将捕获字符串的开始和结尾部分,例如 'PIXRT'=~//输出'P'和'IXRT' 不太熟悉正则表达式,因此非常感谢您的帮助。您可以使用带有两个捕获组的正则表达式,一个在开始时捕获已知值,其余将捕获字符串的其余部分: rx = /
不太熟悉正则表达式,因此非常感谢您的帮助。您可以使用带有两个捕获组的正则表达式,一个在开始时捕获已知值,其余将捕获字符串的其余部分:
rx = /\A(RPX|RO|P)(.*)/m
"PIXRT".scan(rx)
# => [P, IXRT]
见
详细信息:
-字符串的开头\A
-必须位于字符串开头的值之一(请注意这些选项的顺序:长的优先!)(RPX | RO | P)
-字符串末尾的任何0+字符((.*)
修饰符也将使m
匹配换行符)
def split_after_start_string(str, *start_strings)
a = str.split(/(?<=\A#{start_strings.join('|')})/)
if a.size == 2
a
elsif start_strings.include?(str)
a << ''
else
nil
end
end
start_strings = %w| P RO RPX | #=> ["P", "RO", "RPX"]
split_after_start_string('PIXR', *start_strings) #=> ["P", "IXR"]
split_after_start_string('IPXR', *start_strings) #=> nil
split_after_start_string('ROXP', *start_strings) #=> ["RO", "XP"]
split_after_start_string('RPX', *start_strings) #=> ["RPX", ""]
/(?<=\A#{start_strings.join('|')})/ #=> /(?<=\AP|RO|RPX)/