Najlepszy samouczek Scala wyrażeń regularnych W 2024 r. W tym samouczku możesz dowiedzieć się Wyrażenia regularne,Przykłady wyrażeń regularnych,
Scala przezscala.util.matching REGEX typy pakietów klasy do obsługi wyrażeń regularnych.Poniższy przykład demonstruje użycie wyszukiwanie wyrażenia słownegoScala:
import scala.util.matching.Regex object Test { def main(args: Array[String]) { val pattern = "Scala".r val str = "Scala is Scalable and cool" println(pattern findFirstIn str) } }
Realizacja powyższego kodu, wyjście jest:
$ scalac Test.scala $ scala Test Some(Scala)
Przykłady zastosowania metody klasy String r (), aby skonstruować regex obiekt.
Następnie użyj findFirstIn drogę do znalezienia pierwszego meczu.
Jeśli potrzebujesz, aby zobaczyć wszystkie mecze mogą być stosowane metody findAllIn.
Można użyć metody mkString (), aby połączyć wyrażenie regularne dopasowuje ciąg, można skorzystać z potoku (|), aby ustawić różne tryby:
import scala.util.matching.Regex object Test { def main(args: Array[String]) { val pattern = new Regex("(S|s)cala") // 首字母可以是大写 S 或小写 s val str = "Scala is scalable and cool" println((pattern findAllIn str).mkString(",")) // 使用逗号 , 连接返回结果 } }
Realizacja powyższego kodu, wyjście jest:
$ scalac Test.scala $ scala Test Scala,scala
Jeśli trzeba wymienić dopasowywania tekstu określone słowa kluczowe, można użyć metodyreplaceFirstIn (), aby zastąpić pierwszy mecz, użyj replaceAllIn ()metoda zastępuje wszystkie mecze, przykłady przedstawiają się następująco:
object Test { def main(args: Array[String]) { val pattern = "(S|s)cala".r val str = "Scala is scalable and cool" println(pattern replaceFirstIn(str, "Java")) } }
Realizacja powyższego kodu, wyjście jest:
$ scalac Test.scala $ scala Test Java is scalable and cool
Scala zasady składni wyrażenie regularne dziedziczone Java, Java użyje większość z regułami języka Perl.
Poniższa tabela daje nam pewne wspólne zasady wyrażenie regularne:
wyrażenie | reguła dopasowywania |
---|---|
^ | Dopasuj rozpoczyna ciąg wejściowy. |
$ | Dopasuj końcówkę wejściową pozycji strun. |
, | Dopasowuje dowolny pojedynczy znak z wyjątkiem "\ r \ n" jest. |
[pl.] | zestaw znaków. Dopasowuje dowolny znak włączone. Na przykład "[abc]" pasuje do "zwykłego" w "a". |
[^ pl.] | zestaw znaków odwrotnie. Dopasowuje dowolny znak nie są wliczone. Na przykład "[^ abc]" pasuje do "zwykłego" w "P", "l", "i", "n". |
\\ | Dopasuj pozycję startową ciąg wejściowy (bez obsługi multi-line) |
Z \\ | Koniec łańcucha ($ podobne, ale nie wpływa na możliwości leczenia wielu wierszach) |
Z \\ | Koniec łańcucha lub koniec linii (od leczenia w sprawie możliwości wielokrotnego liniowych) |
Re * | Powtarzające się zero lub więcej razy |
re + | Powtarza się raz lub więcej razy |
re? | Powtarzające się zero lub jeden razy |
Re {n} | Powtarzana n razy |
re {n} | |
Re {n, m} | Powtarzające n do m razy |
a | b | Meczu lub b |
(Re) | Mecz ponownie i przechwytywać tekst na auto o nazwie grupy |
(: Re?) | Re mecz, nie uchwycić pasujący tekst, ani do tej grupy przypisany numer grupy |
(?> Re) | Greedy Podwyrażenia |
W \\ | Litery meczu lub cyfr i znaków podkreślenia lub |
W \\ | Nie znaleziono żadnych litery, cyfry, podkreślenia, chińskie znaki |
\\ S | Dopasowuje dowolny spacje, co odpowiada [\ t \ n \ r \ F] |
\\ S | Nie znaleziono żadnych biały znak |
\\ D | numery Dopasowane, podobne do [0-9] |
\\ D | Dopasowuje wszystkie znaki nienumeryczne |
\\ G | Początek bieżącego wyszukiwania |
\\ N | nowalinia |
\\ B | Zazwyczaj pozycja granica wyrazu, ale jeśli używasz charakter klasa reprezentuje Backspace |
\\ B | Lokalizacja nie pasować do początku lub na końcu wyrazu |
\\ T | Tabs |
\\ Q | Zacznijcytuję: \ Q (A + B) * 3 \ e dopasowuje tekst "(A + B) * 3 ". |
\\ E | Konieccytatu: \ Q (a + b) * 3 \ e dopasowuje tekst "(a + b) * 3 ". |
Przykłady | opis |
---|---|
, | Dopasowuje dowolny pojedynczy znak z wyjątkiem "\ r \ n" jest. |
[Rr] Uby | Mecz "Ruby" lub "ruby" |
rub [wy] | Mecz "ruby" lub "Rube" |
[AEIOU] | Dopasuj małe litery: aeiou |
[0-9] | Dopasowuje dowolny cyfrę, podobny do [0123456789] |
[AZ] | Mecze żadnych liter ASCII małe |
[AZ] | Dopasowuje dowolny wielkie litery ASCII |
[A-zA-Z0-9] | Dopasowany cyfry, duże i małe litery |
[^ Aeiou] | Oprócz dopasowania innych postaci aeiou |
[^ 0-9] | Dopasowuje dowolny znak inny niż liczbach |
\\ D | Dopasowane numery, na przykład: [0-9] |
\\ D | Numery dla dopasowania, na przykład: [^ 0-9] |
\\ S | obowiązuje mecz, podobnie jak: [\ t \ r \ n \ F] |
\\ S | Dopasowane niż kosmiczne, podobnie jak: [^ \ t \ r \ n \ f] |
W \\ | litery, cyfry, mecz podkreśla, podobne do: [a-zA-z0-9_] |
W \\ | Niepasujące liter, cyfr, podkreśleń, podobne do: [^ A-Za-z0-9_] |
Ruby? | Mecz "sęk" lub "ruby": y jest opcjonalny |
rubin * | Mecz "sęk" oraz zero lub więcej r. |
rubin + | Mecz "sęk" plus jeden lub więcej y. |
\\ D {3} | Dokładnie dopasowanie trzech cyfr. |
\\ D {3} | Dopasuj trzy lub więcej cyfr. |
\\ D {3,5} | Dopasuj trzy, cztery lub pięć cyfr. |
\\ \\ D + D | Nie Grupowanie: + powtarzanie \ d |
(D \\ \\ d) + / | Grupa: + powtarzanie \ d \ d |
([Rr] Uby (,)?) + | Mecz "Ruby", "Ruby, Ruby, Ruby", etc. |
Należy zauważyć, że powyższa tabela dla każdego znaku wykorzystuje dwie ukośnik. To dlatego, że w języku Java i Scala backslash w łańcuchu jest znakiem ucieczki. Więc jeśli chcesz wstawić. \., Musisz napisać w ciągu. \\. Aby uzyskać odwrotny ukośnik. Patrz następujące przykłady:
import scala.util.matching.Regex object Test { def main(args: Array[String]) { val pattern = new Regex("abl[ae]\\d+") val str = "ablaw is able1 and cool" println((pattern findAllIn str).mkString(",")) } }
Realizacja powyższego kodu, wyjście jest:
$ scalac Test.scala $ scala Test able1