ruby - Making part of the regex optional -


यहाँ मेरा regex है:

  /On.* \ d {1,2} \ / \ D {1,2} \ / \ d {1,4} \ d {1,2}: \ d {1,2} (?: AM | PM),। * लिखा: /   

मेल करने के लिए:

  3/14/11 2:55 अपराह्न पर, XXXXX XXXXXX ने लिखा:   

मुझे इस रेगेक्स की आवश्यकता है मैच भी करने के लिए:

  25/03/2011 को, 2:19 पूर्वाह्न पर, XXXXX XXXXXXXX लिखा है:   

इसलिए मैंने यह कोशिश की:

  / ओन्नी \ d {1,2} \ / \ d {1,2} \ / \ d {1,4} (, पर)?   

लेकिन यह अन्य मैचों को तोड़ता है < P> क्या मैं (, पर) बना रहा हूँ? वैकल्पिक सेट सही?

धन्यवाद

मैंने आपको रेगेक्स को थोड़ी सी बदल दिया है, और मैं दोनों तारों से मिलान करने में सक्षम हूँ मेरे पास regex है:

  /On.* \ d {1,2} \ / \ d {1,2} \ / \ d {1,4} (?:, पर )? \ D {1,2}: \ d {1,2} (?: AM | PM),। * लिखा: /   

दो के परिणामों की तुलना करें:

  आईआरबी (मुख्य): 023: 0 & gt; S1 = "25/03/2011 को, 2:19 पूर्वाह्न पर, XXXXX XXXXXXXX ने लिखा:" = & gt; "25/03/2011 को, 2:19 पूर्वाह्न पर, XXXXX XXXXXXXX ने लिखा:" irb (मुख्य): 024: 0 & gt; S2 = "3/14/11 पर 2:55 अपराह्न, XXXXX XXXXXX ने लिखा:" = & gt; "3/14/11 पर 2:55 अपराह्न, XXXXX XXXXXX ने लिखा:" # अपने पिछले रेगेक्स इर्ब (मुख्य): 025: 0 & gt; M = /On.* \ d {1,2} \ / \ d {1,2} \ / \ d {1,4} (, पर)? \ D {1,2}: \ d {1,2} (?: AM | PM),। * लिखा: / = & gt; /On.* \ d {1,2} \ / \ d {1,2} \ / \ d {1,4} (?:, At) \ d {1,2}: \ d {1,2} (?: AM | PM),। * लिखा है: / irb (मुख्य): 026: 0 & gt; S1.match (m) = & gt; # & Lt; MatchData "25/03/2011 को, 2:19 पूर्वाह्न पर, XXXXX XXXXXXXX" & gt; आईआरबी (मुख्य): 027: 0 & gt; S2.match (m) = & gt; शून्य # अपडेटेड रेगेक्स इर्ब (मुख्य): 028: 0 & gt; M = /On.* \ d {1,2} \ / \ d {1,2} \ / \ d {1,4} (?:, पर)? \ D {1,2}: \ d {1,2} (?: AM | PM),। * लिखा / = & gt; /On.* \ d {1,2} \ / \ d {1,2} \ / \ d {1,4} (?:, पर)? \ D {1,2}: \ d {1,2} (?: AM | PM),। * लिखा / irb (मुख्य): 02 9: 0 & gt; S1.match (m) = & gt; # & Lt; MatchData "25/03/2011 को, 2:19 पूर्वाह्न पर, XXXXX XXXXXXXX" & gt; आईआरबी (मुख्य): 030: 0 & gt; S2.match (m) = & gt; # & Lt; MatchData "3/14/11 पर 2:55 अपराह्न, XXXXX XXXXXX" & gt;    

Comments