Scalaの正規表現2024 年の最新の入門チュートリアル。このコースでは 正規表現,正規表現の例, について学習できます。
正規表現クラスのパッケージタイプをscala.util.matchingことによりScalaは正規表現をサポートします。 次の例では、正規表現の検索ワードスカラの使用方法を示しています 。
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) } }
上記のコードの実装、出力は次のようになります。
$ scalac Test.scala $ scala Test Some(Scala)
StringクラスのR()メソッドの使用例は、正規表現オブジェクトを構築します。
その後、最初の一致を見つけるために、findFirstInの方法を使用します。
あなたが見る必要がある場合は、すべての一致がfindAllIn方法を使用することができます。
(|)あなたは、正規表現文字列と一致し、あなたがパイプを使用することができます接続するためにmkString()メソッドを使用することができ、異なるモードを設定することを:
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(",")) // 使用逗号 , 连接返回结果 } }
上記のコードの実装、出力は次のようになります。
$ scalac Test.scala $ scala Test Scala,scala
テキストマッチング指定されたキーワードを交換する必要がある場合は、最初の一致を置き換えるためにreplaceFirstIn()メソッドを使用することができ、replaceAllIn()メソッドを使用しているすべての一致を置き換え、次のように、例を示します。
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")) } }
上記のコードの実装、出力は次のようになります。
$ scalac Test.scala $ scala Test Java is scalable and cool
Scalaの正規表現の構文規則は、Javaは、JavaはPerl言語のルールのほとんどを使用します継承しました。
次の表は、私たちにいくつかの一般的な正規表現の規則を与えます:
表現 | 一致規則 |
---|---|
^ | 入力文字列が始まると一致。 |
$ | 文字列の位置の入力端と一致しています。 |
。 | 以外の任意の1文字に一致し、 "\ rをする\ n"です。 |
[ja.] | 文字セット。 任意の文字が含まれる一致します。 たとえば、「[abc]は」「A」の「プレーン」と一致します。 |
[^ ja.] | リバース文字セット。 含まれていない任意の文字に一致します。 たとえば、「[^ abc]は「「私」、「n」は、「L」「P」の「プレーン」と一致します。 |
\\ | 入力文字列の開始位置(なしマルチラインサポート)と一致 |
\\ Z | 文字列の末尾($似てではなく、複数行のための治療法の選択肢に影響を与えます) |
\\ Z | (複数ラインオプションの処理からの)文字列または行の終わりの終わり |
*再 | 繰り返し0回以上 |
+再 | 繰り返し一回以上 |
再? | 繰り返しゼロまたは1回 |
{n}が再 | 反復n回 |
{、n}が再 | |
再{N、M} | m回の繰り返しnは |
| B | 一致またはb |
(再) | マッチの再、および自動という名前のグループにテキストをキャプチャ |
(:?再) | マッチ再、一致するテキストをキャプチャしていない、またこのグループに割り当てられたグループ番号に |
(?>再) | 貪欲な部分式 |
\\ W | マッチ文字や数字、または下線文字や |
\\ W | 任意の文字、数字、アンダースコア、中国語の文字と一致しません |
\\ S | 同等のマッチ任意の空白、[\トン\ nは\ rを\ f]の |
\\ S | 任意の空白文字と一致しません |
\\ D | [0-9]と同様のマッチング数、 |
\\ D | 任意の数字以外の文字に一致します |
\\ G | 現在の検索の開始 |
\\ N | 改行 |
\\ B | 通常の単語境界位置していますが、文字クラスを使用する場合は、バックスペースを表し、 |
\\ B | 場所単語の先頭または末尾と一致しません |
\\ T | タブ |
\\ Q | 引用開始:\ Qは、(A + B)* 3 \ Eは、テキスト「(A + B)* 3と一致します」。 |
E \\ | 終了引用符:\ Q(A + B) * 3 \ Eは、テキストに一致する」(A + B)* 3 」。 |
例 | 説明 |
---|---|
。 | 以外の任意の1文字に一致し、 "\ rをする\ n"です。 |
【Rrは] uby | マッチ「ルビー」または「ルビー」 |
こする[がた] | マッチ「ルビー」または「ルーブ」 |
[AEIOU] | AEIOU:小文字を一致させます |
[0-9] | [0123456789]に似た任意の数字と一致します |
[AZ] | 任意のASCII小文字の文字に一致します |
[AZ] | 任意のASCIIの大文字に一致します |
[A-ZA-Z0-9] | マッチング数字、大文字と小文字 |
[^ AEIOU] | 一致する他の文字に加えてAEIOU |
[^ 0-9] | 数字以外の任意の文字に一致します |
\\ D | このように、数字をマッチング:[0-9] |
\\ D | このような非マッチング番号、:[^ 0-9] |
\\ S | 似マッチスペース、:[\トン\ rを\ n個の\のF] |
\\ S | [^ \トン\ rを\ n個の\ f]は:と同様の非空間をマッチング |
\\ W | 似たマッチ文字、数字、アンダースコア、:[A-ZA-Z0-9_] |
\\ W | [^ A-ZA-Z0-9_]:に似た非マッチング文字、数字、アンダースコア、 |
ルビー? | マッチ「こする」または「ルビー」:yは任意です |
ルビー* | マッチ "こする"プラスyはゼロ以上。 |
ルビー+ | マッチ "こする"プラスyは1以上です。 |
\\ D {3} | 正確に3つの数字に一致します。 |
\\ D {3、} | 3桁以上に一致します。 |
\\ D {3,5} | 3つ、4つまたは5つの数字と一致しています。 |
\\ D \\ D + | グループ化いいえ:+繰り返し\ dは |
(\\ D \\ d)の+ / | グループ:\ D \ Dに繰り返し+ |
([Rrを】uby()?)+ | マッチ「ルビー」、「ルビー、ルビー、ルビー」など |
各文字については、上記の表は、2つのバックスラッシュを使用することに注意してください。 JavaとScalaで文字列内のバックスラッシュはエスケープ文字であるためです。 ですから、出力したい場合は。\。、あなたは文字列で記述する必要があります。\\。バックスラッシュを取得するには。 次の例を参照してください:
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(",")) } }
上記のコードの実装、出力は次のようになります。
$ scalac Test.scala $ scala Test able1