簡體   English   中英

如何在Ruby中獲取字符串匹配regexp的特定部分?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM