Chciałbym załatać niektóre dane tekstowe wyodrębnione ze stron internetowych. próbki:Jak cofnąć referencję w wyrażeniu regularnym Rubinowym (regex) za pomocą gsub, gdy używam grupowania?
t="First sentence. Second sentence.Third sentence."
nie ma miejsca po kropce na końcu zdania drugiego. To oznacza, że trzecie zdanie znajdowało się w oddzielnym wierszu (po tagu br) w oryginalnym dokumencie.
Chcę użyć tego wyrażenia regularnego, aby wstawić znak "\ n" w odpowiednie miejsca i załatać mój tekst. Moje regex:
t2=t.gsub(/([.\!?])([A-Z1-9])/,$1+"\n"+$2)
Ale niestety to nie działa: "NoMethodError: metoda niezdefiniowany` +”do zera: NilClass" Jak mogę poprawnie wsteczną do dopasowanych grup? W programie Microsoft Word było tak łatwo, wystarczyło użyć symboli \ 1 i \ 2.
Numerowane globale ('$ 1',' $ 2', ...) nie są ustawiane, gdy drugi argument jest oceniany, są one ustawiane przez 'gsub' zanim ulegnie blokowi. Dlatego Sawa radzi, kiedy należy używać '\ 1'' i kiedy używać' $ 1'. –