[英]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.