Próbuję dopasować określony tekst, a następnie zastąpić tekstem i kilkoma dodatkowymi znakami. Minimalny przykładowy tekst:
#10 Oranges. These are citrus fruits
Pożądane wyjście:
#10 Oranges.
These are citrus fruits
Regex: (#\d{1,2}[^.]*\.)\s*
Zamienić: $1\n
( Match using regular expressions
Sprawdziłem)
Wyrażenie regularne pomyślnie pasuje #10 Oranges.
. Jednak numerowane odniesienie wsteczne nie zastępuje tekstu grupą przechwytującą, ale po prostu wchodzi dosłownie (dosłowne dane wyjściowe są $1\n
). Próbowałem także użyć odwrotnego ukośnika dla numerowanego odsyłacza wstecznego \1
i wynik jest taki sam.
Czy czegoś brakuje? Jak wstawić ponownie dopasowany tekst do dokumentów Google przy użyciu wyrażeń regularnych?
google-docs
regex
Użytkownik
źródło
źródło
Note: Capture groups only work with Google Sheets.
Zobacz support.google.com/docs/answer/62754#regular_expressionsOdpowiedzi:
Krótka odpowiedź
Zamiast korzystać z wbudowanej funkcji znajdowania i zamieniania, użyj Google Apps Script lub dodatku.
Wyjaśnienie
W funkcji Znajdź i zamień w Dokumentach Google część Zamień nie działa z wyrażeniami regularnymi i nie działa ani z
replaceText()
metodą z usługi Dokumenty w Google Apps Script, na szczęście metoda zamiany JavaScript działa.Aby poznać podstawy tworzenia prostego skryptu, zobacz https://developers.google.com/apps-script/overview
Kod
Ten kod jest adaptacją kodu zawartego w odnośniku
Bibliografia
źródło
Replace with regular expressions
)Trochę hacky, ale nie wymaga dodatkowego skryptu i prawdopodobnie obejmie 99% twoich przypadków użycia. Nadal możesz używać grup przechwytywania z
RegexReplace
odniesieniami w tekście zastępującym za pomocą$1
lub$2
. Po prostu podziel regex na dwie grupy przechwytywania i połącz z przypadkową (rzadko używaną) postacią, taką jak~
. Następnie możesz pobrać całą zwróconą wartość i zastąpić~
ją nową linią:Aby uzyskać więcej informacji na temat składni wyrażenia regularnego używanego w arkuszach google, zobacz specyfikację re2
źródło
Jak stwierdził użytkownik w komentarzach
Uwaga: grupy przechwytywania działają tylko z Arkuszami Google.
źródło