웹 프론트엔드 JS 튜토리얼 정규식 튜토리얼을 위한 위치 매칭 튜토리얼(코드 포함)

정규식 튜토리얼을 위한 위치 매칭 튜토리얼(코드 포함)

Mar 29, 2018 pm 06:03 PM
위치 성냥 표현

이번에는 정규식 위치 매칭 튜토리얼(코드 포함)을 가져왔습니다. 정규식 튜토리얼 위치 매칭 사용 시 주의사항은 무엇인가요? 실제 사례를 살펴보겠습니다.

이 기사의 예에서는 정규식 튜토리얼의 위치 일치를 설명합니다. 다음과 같이 참조용으로 모든 사람과 공유하세요.

참고: 모든 예제에서 정규식 일치 결과는 소스 텍스트의 [] 사이에 포함됩니다. 일부 예제는 Java를 사용하여 구현됩니다. Java 자체에서 정규식을 사용하는 방법에 대해서는 해당 부분에서 설명하겠습니다. 모든 Java 예제는 JDK1.6.0_13에서 테스트되었습니다.

1. 문제 소개

텍스트에서 특정 단어를 일치시키려는 경우(나중에 소개할 지금은 여러 줄 모드를 무시하고) 다음과 같이 보일 수 있습니다.

텍스트: 어제는 역사이고, 내일은 미스터리지만 오늘은 선물입니다.

정규식: is

결과: 어제 【is】 h【is】tory, 내일 【is】 미스터리인데 오늘 【is】 선물입니다.

분석: 원래는 is라는 단어만 일치시키려고 했으나, 다른 단어에 포함된 is도 일치시켰습니다. 이 문제를 해결하려면 경계 구분 기호를 사용하십시오. 즉, 정규식에서 일부 메타 문자 를 사용하여 일치 작업이 수행되기를 원하는 위치(또는 경계)를 나타냅니다.

2. 단어 경계

일반적으로 사용되는 경계는 단어의 시작과 끝을 일치시키는 데 사용되는 한정자 b로 지정되는 단어 경계입니다. 보다 정확하게는 단어를 형성하는 데 사용할 수 있는 문자(문자, 숫자, w와 일치하는 문자인 밑줄)와 단어를 형성하는 데 사용할 수 없는 문자(W는 문자와 일치) 사이의 위치를 ​​일치시킵니다. . 이전 예를 살펴보겠습니다.

텍스트: 어제는 역사이고 내일은 미스터리이지만 오늘은 선물입니다.

정규식: bisb

결과: 어제 【is】 역사, 내일 【is】 수수께끼인데 오늘 【is】 선물입니다.

분석: 원문에서 is라는 단어 앞뒤에 공백이 있는데, 이는 bisb 패턴과 일치합니다(공백은 다음과 같습니다. 문자 중 하나를 단어로 분리하세요). History라는 단어에도 is가 포함되어 있습니다. 그 이유는 이 두 문자 중 어느 것도 b와 일치할 수 없기 때문입니다.

단어 경계가 일치하지 않으면 B가 사용됩니다. 예:

텍스트: 색상에 표시된 9자리 ID를 입력하세요.

정규식: B-B

결과: 【9자리】를 입력하세요. 색상에 표시된 ID - coded [pass-key].

분석: B-B는 9-에서 하이픈 앞뒤에 단어 경계가 아닌 하이픈을 일치시킵니다. digit 및 pass-key. 이므로 일치할 수 있지만 색상으로 구분된 하이픈 앞뒤에 공백이 있어 일치할 수 없습니다.

3. StringBoundary

단어 경계는 단어와 관련된 위치(단어의 시작, 단어의 끝, 전체 단어 등)를 일치시키는 데 사용할 수 있습니다. 문자열 경계는 비슷한 목적을 가지고 있지만 문자열과 관련된 위치(문자열의 시작, 문자열의 끝, 전체 문자열 등)를 일치시키는 데 사용됩니다. 문자열 경계를 정의하는 데 사용되는 메타 문자는 두 가지가 있습니다. 하나는 문자열의 시작을 정의하는 데 사용되는 ^이고 다른 하나는 문자열의 끝을 정의하는 데 사용되는 $입니다.

예를 들어 XML 문서의 적법성을 확인하려는 경우 법적 XML 문서는 모두 로 시작합니다.

텍스트:

<?xml version="1.0" encoding="UTF-8"?>
<project basedir="." default="ear">
</project>
로그인 후 복사

正则表达式:^\s*<\?xml.*?\?>

结果:



分析:^匹配一个字符串的开头位置,所以^\s*将匹配一个字符串的开头位置和随后的零个或多个空白字符,因为标签前面允许有空格、制表符、换行符等空白字符。

$元字符符的用法除了位置上的差异外,与^用法完全一样。比如,检查一个html页面是否以结尾,可以用模式:\s*$

四、多行匹配模式

正则表达式可以通过一些特殊的元字符来改变另外一些元字符的行为。可以通过(?m) 来启用多行匹配模式。多行匹配模式将使得正则表达式引擎把行分隔符当做一个字符串分隔符来对待。在多行匹配模式下,^不仅匹配正常的字符串开头,还将匹配行分隔符(换行符)后面的开始位置,$不仅匹配正常的字符串结尾,还将匹配行分隔符(换行符)后面的结束位置。

在使用时,(?m)必须出现在整个模式的最前面。比如,通过正则表达式把一段java代码中的单行注释(以//开始)内容全部找出来。

文本:

publicDownloadingDialog(Frame parent){
     //Callsuper constructor, specifying that dialog box is modal.
     super(parent,true);
     //Setdialog box title.
     setTitle("E-mailClient");
     //Instructwindow not to close when the "X" is clicked.
     setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
     //Puta message with a nice border in this dialog box.
     JPanelcontentPanel = new JPanel();
     contentPanel.setBorder(BorderFactory.createEmptyBorder(5,5, 5, 5));
     contentPanel.add(newJLabel("Downloading messages..."));
     setContentPane(contentPanel);
     //Sizedialog box to components.
     pack();
     //Centerdialog box over application.
     setLocationRelativeTo(parent);
}
로그인 후 복사

正则表达式:(?m)^\s*//.*$

结果:

         publicDownloadingDialog(Frame parent){
【              //Call superconstructor, specifying that dialog box is modal.】                   super(parent,true);
【              //Set dialog boxtitle.】                   setTitle("E-mailClient");
【              //Instruct windownot to close when the "X" is clicked.】                   setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
【              //Put a messagewith a nice border in this dialog box.】                   JPanelcontentPanel = new JPanel();
                   contentPanel.setBorder(BorderFactory.createEmptyBorder(5,5, 5, 5));
                   contentPanel.add(newJLabel("Downloading messages..."));
                   setContentPane(contentPanel);
【              //Size dialog boxto components.】                   pack();
【              //Center dialogbox over application.】                   setLocationRelativeTo(parent);
         }

分析:^\s*//.*$将匹配一个字符串的开始,然后是任意多个空白字符,再后面是//,再往后是任意文本,最后是一个字符串的结束。不过这个模式只能找出第一条注释,加上(?m)前缀后,将把换行符视为一个字符串分隔符,这样就可以把每一行注释匹配出来了。

java代码实现如下(文本保存在text.txt文件中):

public static String getTextFromFile(String path) throws Exception{
  BufferedReader br = new BufferedReader(new FileReader(new File(path)));
  StringBuilder sb = new StringBuilder();
  char[] cbuf = new char[1024];
  int len = 0;
  while(br.ready() && (len = br.read(cbuf)) > 0){
    br.read(cbuf);
    sb.append(cbuf, 0, len);
  }
    br.close();
  return sb.toString();
}
public static void multilineMatch() throws Exception{
  String text = getTextFromFile("E:/text.txt");
  String regex = "(?m)^\\s*//.*$";
  Matcher m = Pattern.compile(regex).matcher(text);
  while(m.find()){
    System.out.println(m.group());
  }
}
로그인 후 복사

输出结果如下:

//대화 상자가 모달임을 지정하여 수퍼 생성자를 호출합니다.
//대화 상자 제목을 설정합니다.
//"X"를 클릭해도 창이 닫히지 않도록 지시합니다.
//좋은 테두리가 있는 메시지를 넣습니다. 이 대화 상자.
//대화 상자 크기를 구성 요소로 조정합니다.
//응용 프로그램 위에 대화 상자를 가운데에 배치합니다.

5. 요약

정규식은 모든 길이의 텍스트 블록을 일치시키는 데 사용할 수 없습니다. 문자열의 특정 위치에 나타납니다. b는 단어 경계를 지정하는 데 사용됩니다(B는 정반대입니다). ^ 및 $는 단어 경계를 지정하는 데 사용됩니다. (?m)과 함께 사용하면 ^ 및 $는 개행 문자로 시작하거나 끝나는 문자열과도 일치합니다. 하위 표현식의 사용은 다음 기사에서 소개됩니다.

이 기사의 사례를 읽으신 후 방법을 마스터하셨다고 믿습니다. 더 흥미로운 정보를 보려면 PHP 중국어 웹사이트의 다른 관련 기사를 주목하세요!

추천 자료:

연속된 숫자를 정규식으로 일치시키는 방법

정규식으로 최소 일치를 구현한 개발 경험

위 내용은 정규식 튜토리얼을 위한 위치 매칭 튜토리얼(코드 포함)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Windows 11에서 환경 변수 설정을 활성화하는 방법에 대한 세부 정보 Windows 11에서 환경 변수 설정을 활성화하는 방법에 대한 세부 정보 Dec 30, 2023 pm 06:07 PM

환경 변수 기능은 시스템에서 구성 프로그램을 실행하는 데 필수적인 도구이지만 최신 win11 시스템에서는 여전히 이를 설정하고 여는 방법을 모르는 사용자가 많습니다. win11 환경 변수 열기 위치를 알아보십시오. win11 환경 변수는 어디에 있습니까? 1. 먼저 "win+R"을 입력하여 실행 상자를 엽니다. 2. 그런 다음 controlsystem 명령을 입력합니다. 3. 열리는 시스템 정보 인터페이스의 왼쪽 메뉴에서 "고급 시스템 설정"을 선택합니다. 4. 그런 다음 열리는 "시스템 속성" 창 하단에서 "환경 변수" 옵션을 선택합니다. 5. 마지막으로 열린 환경 변수에서 필요에 따라 관련 설정을 지정할 수 있습니다.

Win11 시작 경로 및 여는 방법 Win11 시작 경로 및 여는 방법 Jan 03, 2024 pm 11:13 PM

모든 Windows 시스템에는 시작 경로가 있습니다. 파일이나 소프트웨어를 추가하면 부팅 시 열립니다. 하지만 많은 친구들은 win11 시작 경로가 어디에 있는지 모릅니다. 실제로 C 드라이브의 해당 폴더에 들어가기만 하면 됩니다. Win11 시작 경로: 1. "내 PC"를 두 번 클릭하여 엽니다. 2. "C:\ProgramData\Microsoft\Windows\StartMenu\Programs\Startup" 경로를 경로 상자에 직접 붙여넣습니다. 3. win11 시작 경로는 다음과 같습니다. 부팅 후 파일을 열려면 파일을 넣으면 됩니다. 4. 해당 경로로 진입이 불가능할 경우 숨겨져 있을 수 있습니다.

windows10 자격 증명 관리자는 어디에 있습니까? windows10 자격 증명 관리자는 어디에 있습니까? Jul 09, 2023 am 10:09 AM

Credential Manager는 사용자가 웹 자격증명과 Windows 자격증명을 관리하기 위해 사용하는 기능이지만, 아직까지 Windows 10 Credential Manager가 어디에 있는지 모르는 사용자가 많습니다. 실제로 자격 증명 관리자는 제어판을 연 후 보기를 클릭하여 모든 종류의 정보를 볼 수 있도록 보기 방법을 작은 아이콘으로 변경해야 합니다. 대량의 을(를) 보려면 계정 비밀번호를 입력해야 합니다. Windows 10 자격 증명 관리자는 어디에 있습니까? 1. 시스템에서 제어판을 열고 오른쪽 상단에 있는 보기 방법을 클릭한 다음 유형을 작은 아이콘으로 변환합니다. 2. 작은 아이콘으로 확인 후, "인증서 관리자"를 클릭하세요. 3. 자격증명 관리자에 진입하시면 주로 사용되는 관련 기능에 대한 소개를 보실 수 있습니다.

Stardome Railway Crocker Film and Television Park의 종이접기 새 위치 Stardome Railway Crocker Film and Television Park의 종이접기 새 위치 Mar 27, 2024 pm 11:51 PM

스타 돔 철도의 크로커 영화 및 텔레비전 공원에는 총 20마리의 종이접기 새가 있습니다. 많은 플레이어가 크로커 영화 및 텔레비전 공원의 종이 접기 새가 어디에 있는지 알지 못합니다. 편집자는 모든 사람을 돕기 위해 각 종이 접기 새의 위치를 ​​요약했습니다. . 특정 콘텐츠를 검색하고 Croaker Film and Television Park의 종이접기 새 위치에 대한 최신 요약을 살펴보세요. 홍키돔 레일웨이 안내 스타돔 레일웨이 크로커무비파크 종이접기새 위치 1, 크로커무비파크 1층 2, 크로커무비파크 2층

pip 설치 패키지 저장소의 위치와 구조 이해 pip 설치 패키지 저장소의 위치와 구조 이해 Jan 18, 2024 am 08:23 AM

pip가 설치한 패키지의 저장 위치에 대해 자세히 알아보려면 특정 코드 예제가 필요합니다. Pip는 Python 언어에서 일반적으로 사용되는 패키지 관리 도구로, Python 패키지를 쉽게 설치, 업그레이드 및 관리하는 데 사용됩니다. pip를 사용하여 패키지를 설치하면 PyPI(Python Package Index)에서 해당 패키지 파일을 자동으로 다운로드하여 지정된 위치에 설치합니다. 그렇다면 pip로 설치한 패키지는 어디에 저장되어 있나요? 이는 많은 Python 개발자가 직면하게 되는 문제입니다. 이 기사에서는 pip가 설치한 패키지의 위치를 ​​자세히 살펴보고 다음을 제공합니다.

Go의 정규 표현식 실용 가이드: 16진수 색상 코드를 일치시키는 방법 Go의 정규 표현식 실용 가이드: 16진수 색상 코드를 일치시키는 방법 Jul 13, 2023 am 10:46 AM

Go 언어 정규식 실용 가이드: 16진수 색상 코드를 일치시키는 방법 소개: 정규식은 패턴 일치 및 문자열 찾기를 위한 강력하고 유연한 도구입니다. Go 언어에서는 내장된 정규식 패키지인 regexp를 사용하여 이러한 작업을 구현할 수 있습니다. 이 글에서는 정규 표현식을 사용하여 Go 언어의 16진수 색상 코드를 일치시키는 방법을 소개합니다. 정규식 패키지 가져오기 먼저 Go 언어의 정규식 패키지 regexp를 가져와야 합니다. 코드 시작 부분에 다음 import 문을 추가할 수 있습니다.

win11 종료 위치 win11 종료 위치 Jan 10, 2024 am 09:14 AM

오랫동안 컴퓨터를 사용하지 않을 경우 컴퓨터를 종료하여 보호하는 것이 가장 좋습니다. 그렇다면 win11에서 종료는 어디에 있습니까? 실제로 일반적으로 시작 메뉴를 열면 찾을 수 있습니다. 그 안에 종료 버튼이 있습니다. Windows 11을 종료하는 위치: 답변: 시작 메뉴의 전원 버튼에 있습니다. 1. 먼저 하단 작업 표시줄에 있는 "Windows 로고"를 클릭하여 "시작 메뉴"를 엽니다. 2. 열면 그림과 같이 오른쪽 하단에 "전원" 버튼이 있습니다. 3. 전원 버튼을 클릭하면 "종료"가 표시되며 이를 클릭하여 종료합니다. 4. 충돌 등 특수한 상황으로 인해 컴퓨터를 종료할 수 없는 경우 컴퓨터의 "전원 버튼"을 직접 길게 눌러 강제 종료할 수 있습니다.

Apple의 체크인 기능 사용: iOS 17의 메시지 앱 가이드 Apple의 체크인 기능 사용: iOS 17의 메시지 앱 가이드 Sep 14, 2023 pm 09:13 PM

iOS 17의 Apple은 메시지에 당신이 집에 안전하게 도착했을 때 사랑하는 사람에게 알리는 새로운 기능을 추가했습니다. 이를 체크인이라고 하며, 사용 방법은 다음과 같습니다. 어두워진 후 집으로 걸어가거나 이른 아침에 조깅을 하러 갈 때 Apple의 메시지 앱을 통해 가족이나 친구에게 연락하여 집에 안전하게 도착했는지 알릴 수 있습니다. 도착 시 CheckIn은 귀하가 집에 있는 시간을 자동으로 감지하여 친구에게 알립니다. 알림을 받고 체크인이 종료되면 귀하에게도 알림이 전송됩니다. 예상치 못한 일이 발생하여 도중에 지연이 발생하는 경우 CheckTab은 진행 상황이 없음을 인식하고 체크인하여 ETA를 늘릴 것인지 묻습니다. 당신이 없다면

See all articles