최고의 스칼라 정규 표현식 튜토리얼 2024년, 이 튜토리얼에서는 정규 표현식,정규 표현식의 예,를 배울 수 있습니다.
정규식 클래스 패키지 유형을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"입니다. |
[ko.] | 문자를 설정합니다. 모든 문자가 포함 일치합니다. 예를 들어, "[abc 방송은]"는 "A"에서 "일반"일치합니다. |
[^ ko.] | 역 문자 세트. 모든 문자가 포함되지 일치합니다. 예를 들어, "[^ 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