2010-11-18 27 views
15

Sử dụng Ruby + regex, đưa ra:ruby, sử dụng regex để tìm một cái gì đó ở giữa hai chuỗi

[email protected]

Tôi muốn lấy chỉ: 31313131313

tức là, những gì là giữa starting-middle+mysite.com

Đây là những gì tôi có cho đến thời điểm này:

to = '[email protected]' 

to.split(/\+/@mysite.com.*/).first.strip 
+1

Câu hỏi này được cực kỳ giống với [câu hỏi khác] của bạn (http://stackoverflow.com/ câu hỏi/4219999/ruby-regex-help) hỏi hai giờ sau đó. –

Trả lời

30

giữa 1st + và 1 @:

to[/\+(.*?)@/,1] 

giữa 1st + và cuối cùng @:

to[/\+(.*)@/,1] 

giữa cuối + và cuối cùng @:

to[/.*\+(.*)@/,1] 

giữa cuối + và 1st.210:

to[/.*\+(.*?)@/,1] 
+0

rất tốt, cảm ơn sự giúp đỡ nhanh chóng. – AnApprentice

+0

tới [/\+(.*?)@/, 1] - Số 1 cho kết quả trùng khớp đầu tiên được tìm thấy trong chuỗi? – stack1

+2

@ stack1, có nó là cho những gì là ** bên trong '()' ** đầu tiên. Cũng giống như '.match (//) [1]' hoặc '.match (//). Nhóm (1)' trong một số ngôn ngữ khác. Thông thường bạn đang lấy chuỗi con duy nhất khi áp dụng regex, vì vậy, ', 1' là khá bình thường trong Ruby. – Nakilon

3

Đây là một giải pháp mà không regex (dễ dàng hơn nhiều cho tôi để đọc):

i = to.index("+") 
j = to.index("@") 
to[i+1..j-1] 
+0

hoạt động, nhưng có quá nhiều dòng mã :) btw, bạn lấy câu hỏi nào cho trang web codequizzes của mình? – stack1

+0

@ stack1- Tôi tạo tất cả các câu hỏi trên CodeQuizzes :) – Powers

Các vấn đề liên quan