Latest web development tutorials

스칼라 정규 표현식

정규식 클래스 패키지 유형을scala.util.matching하여 스칼라는 정규 표현식을 지원합니다.다음 예는 정규 표현식 검색 단어스칼라의 사용을 보여줍니다

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

정규 표현식

스칼라 정규 표현식 구문 규칙은 자바, 자바 펄 언어의 규칙의 대부분을 사용 물려 받았다.

다음 표는 우리에게 몇 가지 일반적인 정규 표현식 규칙을 제공합니다 :

매칭 규칙
^ 입력 문자열이 시작 일치합니다.
$ 문자열 위치의 입력 끝을 맞 춥니 다.
. 제외한 모든 단일 문자와 일치 "\ r에 \ n"입니다.
[...] 문자를 설정합니다. 모든 문자가 포함 일치합니다. 예를 들어, "[abc 방송은]"는 "A"에서 "일반"일치합니다.
[^ ...] 역 문자 세트. 모든 문자가 포함되지 일치합니다. 예를 들어, "[^ abc 방송은]" "I", "N", "L"은 "페이지"에서 "일반"일치합니다.
\\ 입력 문자열의 시작 위치 (아무 멀티 라인 지원) 일치
\\ Z 문자열의 끝 ($ 유사하지만 여러 행에 대한 치료 옵션에 영향을 미치는)
\\ Z 문자열의 끝이나 (여러 줄 옵션에 대한 치료에서) 줄의 끝
다시 * 반복 0 회 이상
+ 재 반복 한 번 이상
다시? 반복 0 또는 1 회
다시 {N} N 회 반복
{N} 다시
다시 {N, m} m 시간에 반복 N
A | B 성냥 또는 b
(재) 대전 재 및 자동라는 그룹에 텍스트를 캡처
(: 재) 경기 재, 일치하는 텍스트를 캡처,도하지 않습니다이 그룹에 할당 된 그룹 번호
(?> 재) 욕심 표현식
\\ W 경기 문자 나 숫자 또는 밑줄 문자 나
\\ W 모든 문자, 숫자, 밑줄, 중국어 문자와 일치하지 않음
\\ S [\ t \ 없음의 \ 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 ".

정규 표현식의 예

기술
. 제외한 모든 단일 문자와 일치 "\ r에 \ n"입니다.
[Rr을] uby 경기 "루비"또는 "루비"
맛사지 [너희] 경기 "루비"또는 "루브"
[AEIOU] 소문자 일치 : AEIOU
[0-9] 유사한 어떤 자리, [0123456789]를 일치
[아즈] 모든 ASCII 소문자 문자를 일치
[AZ] 모든 ASCII 대문자와 일치
[A-ZA-Z0-9] 일치하는 숫자, 대문자와 소문자
[^ AEIOU] 일치하는 다른 캐릭터 이외에 AEIOU
[^ 0-9] 숫자 이외의 문자와 일치
\\ D 이 같은 번호를 매칭 ​​: [0-9]
\\ D 이 같은 일치하지 않는 번호 : [^ 0-9]
\\ S 비슷한에 일치 공간 : [\ t \ 연구 \ n \ f를]
\\ S 비 공간을 매칭, 유사 : [^ \의 t \ r에 \ n 개의 \ f를]
\\ W 유사 일치 문자, 숫자, 밑줄, [A-만 Za-z0-9_]
\\ W 유사 일치하지 않는 문자, 숫자, 밑줄 : [^ A-만 Za-z0-9_]
루비? 경기 "마찰"또는 "루비"Y는 선택 사항입니다
루비 * 경기 "마찰"플러스 제로 또는 y보다.
루비 + 경기 "마찰"을 더한 또는 y보다.
\\ D {3} 정확히 세 개의 숫자가 일치.
\\ D {3,} 세 개 이상의 숫자를 일치시킵니다.
\\ D {3,5} 3 개, 4 개 또는 5 개의 숫자를 일치시킵니다.
\\ D \\ D + 어떤 그룹화하지 : + 반복 \ D
(\\ D \\ d)에 + / 그룹 : \ D \ D에 반복 +
([Rr의] uby ()?) + 경기 "루비", "루비, 루비, 루비", 등

각 문자에 대한 위의 표는 두 개의 백 슬래시를 사용합니다. 문자열에서 자바와 스칼라에서 백 슬래시 이스케이프 문자이기 때문이다. 당신이 출력 싶다면. \., 당신은 문자열을 작성해야합니다. \\. 백 슬래시를 얻으려면. 다음 예를 참조하십시오 :

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