我会感谢有关此问题的任何意见。
我有一个正则表达式,应该从字符串中收集一些数据。 表达式如下所示:
/\[QUOTE\=(p|c)\|(\d+)\](.*)\[\/QUOTE\]/
我使用的字符串可能如下:
[QUOTE=c|223]ContentText[/QUOTE]
我使用了这段代码:
regexp = /\[QUOTE\=(p|c)\|(\d+)\](.*)\[\/QUOTE\]/
data = regexp.match(str)
其中str
是要获取的字符串:
1: c , 2: 223, 3: ContentText
match
仅返回nil。如果我通过rubular.com使用相同的字符串运行相同的正则表达式,我会得到我想要的结果。我也尝试过调用match
的各种方式,但它没有帮助。
我误解了match
功能吗?我做错了什么?
答案 0 :(得分:0)
你能粘贴确切的代码吗?您的代码段未显示str
的分配。您的代码适合我:
irb(main):002:0> regexp = /\[QUOTE\=(p|c)\|(\d+)\](.*)\[\/QUOTE\]/
=> /\[QUOTE\=(p|c)\|(\d+)\](.*)\[\/QUOTE\]/
irb(main):003:0> str = "[QUOTE=c|223]ContentText[/QUOTE]"
=> "[QUOTE=c|223]ContentText[/QUOTE]"
irb(main):004:0> data = regexp.match(str)
=> #<MatchData "[QUOTE=c|223]ContentText[/QUOTE]" 1:"c" 2:"223" 3:"ContentText">
irb(main):005:0>