[英]How to get the particular part of string matching regexp in Ruby?
我有一个Unnecessary:12357927251data
的字符串Unnecessary:12357927251data
,我需要选择冒号和数字后的所有数据。 我会用Regexp来做。
string.scan(/:\d+.+$/)
这将给我:12357927251data
,但我可以只选择所需的信息.+
( data
)?
正则表达式中括号中的任何内容都将被捕获为一个组,您可以在$1
, $2
等中访问,或者在匹配对象上使用[]
:
string.match(/:\d+(.+)$/)[1]
如果将扫描与捕获组一起使用,则将获得组的数组数组:
"Unnecessary:123data\nUnnecessary:5791next".scan(/:\d+(.+)$/)
=> [["data"], ["next"]]
在正则表达式中使用括号,结果将分解为数组。 例如:
x='Unnecessary:12357927251data'
x.scan(/(:\d+)(.+)$/)
=> [[":12357927251", "data"]]
x.scan(/:\d+(.+$)/).flatten
=> ["data"]
试试这个:/(?<= /(?<=\\:)\\d+.+$/
它将冒号更改为正向后视,以便它不会出现在输出中。 请注意,仅冒号是元字符,因此必须使用反斜杠进行转义。
假设您正在尝试从字符串中获取字符串'data',那么您可以使用:
string.match(/.*:\d*(.*)/)[1]
String #matre返回MatchData对象。 然后,您可以索引到该MatchData对象以查找所需字符串的一部分。
(MatchData的第一个元素是原始字符串,第二个元素是括号捕获的字符串的一部分)
使用IRB
irb(main):004:0> "Unnecessary:12357927251data".scan(/:\d+(.+)$/)
=> [["data"]]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.