참조-이 정규식은 무엇을 의미합니까?
Apr 08 2014
이게 뭐야?
일반적인 Q & A 모음입니다. 이것은 또한 커뮤니티 위키이므로 모든 사람이 유지 관리에 참여하도록 초대됩니다.
왜 이런거야?
정규식 은 설명없이 코드 유형의 질문과 잘못된 답변 을 제공하는 데 어려움을 겪고 있습니다 . 이 참조는 품질 Q & A에 대한 링크를 제공하기위한 것입니다.
범위는 무엇입니까?
이 참조는 php , perl , javascript , python , ruby , java , .net 언어를 의미합니다 .
너무 광범위 할 수 있지만 이러한 언어는 동일한 구문을 공유합니다. 특정 기능의 경우 그 뒤에 언어 태그가 있습니다. 예 :
- 정규식 균형 그룹이란 무엇입니까? .그물
답변
980 aliteralmind Apr 09 2014 at 00:24
스택 오버플로 정규식 FAQ
정규식 태그 세부 정보 페이지 에서 많은 일반적인 힌트와 유용한 링크를 참조하세요 .
온라인 튜토리얼
수량 자
- 0 개 이상 :
*: greedy ,*?: reluctant ,*+: possessive - 1 개 이상 :
+: greedy ,+?: reluctant ,++: possessive ?: 선택 사항 (0 또는 1)- 최소 / 최대 범위 (모두 포함) :
{n,m}: n과 m 사이 ,{n,}: n 이상 ,{n}: 정확히 n - 탐욕스럽고, 꺼려하는 것 (일명 "게으른", "배고픈")과 소유 적 수량 자의 차이점 :
캐릭터 클래스
- 대괄호와 괄호의 차이점은 무엇입니까?
[...]: 임의의 문자,[^...]: 부정 / 모든 문자[^]개행 자바 스크립트를 포함하여 한 문자와 일치합니다.[\w-[\d]]/[a-z-[qz]]: 빼기 .net , xml-schema , xpath , JGSoft 설정[\w&&[^\d]]: 교차 자바 설정 , 루비 1.9 이상[[:alpha:]]: POSIX 문자 클래스- 왜
[^\\D2],[^[^0-9]2],[^2[^0-9]]자바에서 다른 결과를 얻을? 자바 - 속기:
- 숫자 :
\d: digit ,\D: 비 숫자 - 단어 문자 (문자, 숫자, 밑줄) :
\w: 단어 문자 ,\W: 단어가 아닌 문자 - 공백 :
\s: whitespace ,\S: non-whitespace
- 숫자 :
- 유니 코드 범주 (
\p{L}, \P{L}등)
탈출 시퀀스
- 수평 공백 :
\h: space-or-tab ,\t: tab - 개행 :
- 부정 공백 시퀀스 :
\H: 비 수평 공백 문자,\V: 비 수직 공백 문자,\N: 비줄 바꿈 문자 pcre php5 java-8 - 기타 :
\v: 수직 탭 ,\e: 이스케이프 문자
앵커
^: 줄 시작 / 입력 ,\b: 단어 경계 및\B: 비 단어 경계 ,$: 줄 / 입력 끝\A: 입력 시작,\Z: 입력 끝 php , perl , ruby\z: 입력의 끝 (\Z파이썬에서) .net , php , pcre , java , ruby , icu , swift , objective-c\G: 경기 시작 php , perl , ruby
( "Flavor 특정 정보 → Java → Matcher" 의 기능 참조)
여러 떼
(...): 캡처 그룹 ,(?:): 비 캡처 그룹\1: 역 참조 및 캡처 그룹 참조,$1: 캡처 그룹 참조- 하위 패턴
(?i:regex)은 무엇을 의미합니까? - 'P'는 무엇을
(?P<group_name>regexp)의미합니까? (?>): 원자 그룹 또는 독립 그룹 ,(?|): 분기 재설정- 명명 된 캡처 그룹 :
- 일반 명명 된 캡처 링 그룹 참조
regular-expressions.info - java :
(?<groupname>regex): 개요 및 명명 규칙 (비 스택 오버플로 링크) - 다른 언어 : 파이썬 , .NET , 펄 , 그리고 PHP
(?P<groupname>regex)(?<groupname>regex)(?<groupname>regex)(?P<groupname>regex)(?<groupname>regex)
- 일반 명명 된 캡처 링 그룹 참조
둘러보기
- 예견 :
(?=...): positive ,(?!...): negative - Lookbehinds :
(?<=...): positive ,(?<!...): negative ( JavaScript에서 지원하지 않음 ) - 룩 비하인드 제한 :
- Lookbehind 대안 :
수정 자
- 대부분의 특징 :
g: global ,i: case-insensitive ,u: unicode ,x: whitespace-extended c: 현재 위치 perl
e: expression php perl
o: once rubym: multiline php perl python javascript .net java ,m: (non) multiline rubys: 한 줄 ( javascript 또는 ruby에서 지원하지 않음 ),s해결 방법 javascriptS: study php
U: ungreedy php r- preg_replace e를 preg_replace_callback으로 변환하는 방법은 무엇입니까?
- 인라인 수정 자란 무엇입니까?
- Ruby 정규식에서 '? -mix'는 무엇입니까?
다른:
|: 대체 (OR) 연산자 ,.: 모든 문자 ,[.]: 리터럴 도트 문자- 어떤 특수 문자를 이스케이프해야합니까?
- 제어 동사 ( PHP 와 펄 ) :
(*PRUNE),(*SKIP),(*FAIL)및(*F)- PHP 전용 :
(*BSR_ANYCRLF)
- PHP 전용 :
- 재귀 ( PHP 와 펄 )
(?R),(?0)및(?1),(?-1),(?&groupname)
일반적인 작업
- 두 중괄호 사이의 문자열을 가져옵니다.
{...} - 상황 s1, s2, s3 ...을 제외하고 패턴 일치 (또는 교체)
- 정규식을 사용하여 문자열에서 모든 YouTube 동영상 ID를 찾으려면 어떻게하나요?
- 확인:
고급 Regex-Fu
- 문자열과 숫자 :
- 다른:
풍미 별 정보
(로 표시된 항목을 제외 *하고이 섹션에는 비 스택 오버플로 링크가 포함되어 있습니다.)
- 자바
- 공식 문서 : Pattern Javadoc , Oracle의 정규 표현식 튜토리얼
- 의 기능 간의 차이점
java.util.regex.Matcher:matches()) : 일치는 input-start 및 -end 모두에 고정되어야합니다.find()) : 일치는 입력 문자열 (하위 문자열)의 모든 위치에있을 수 있습니다.lookingAt(): 일치는 입력 시작에만 고정되어야합니다.- (일반적인 앵커의 경우 "앵커"섹션 참조)
- 유일한
java.lang.String정규 표현식을 받아 기능 :matches(s),replaceAll(s,s),replaceFirst(s,s),split(s),split(s,i) - * 의 단점 및 누락 된 기능에 대한 (의견 및) 자세한 논의
java.util.regex
- .그물
- 공식 문서 :
- Boost regex 엔진 : 일반 구문 , Perl 구문 (TextPad, Sublime Text, UltraEdit, ... ???에서 사용)
- JavaScript 1.5 일반 정보 및 RegExp 객체
- .NET
MySQL
Oracle
Perl5 버전 18.2
- PHP : 패턴 구문 ,
preg_match - Python : 정규식 작업 ,
search대match, 방법 - Splunk : 정규식 용어 및 구문 및 정규식 명령
- Tcl : 정규식 구문 , 맨 페이지 ,
regexp명령 - Visual Studio 찾기 및 바꾸기
일반 정보
(로 표시된 링크 *는 비 스택 오버플로 링크입니다.)
- 기타 일반 문서 리소스 : 정규식 학습 , * Regular-expressions.info , * Wikipedia 항목 , * RexEgg , Open-Directory Project
- DFA 대 NFA
- 정규식과 일치하는 문자열 생성
- 책 : Jeffrey Friedl의 정규 표현식 마스터 링
- 때 하지 정규 표현식을 사용 :
- 어떤 사람들은 문제에 직면했을 때 "알아요, 정규 표현식을 사용할 것입니다"라고 생각합니다. 이제 두 가지 문제가 있습니다. ( Stack Overflow 의 설립자가작성한 블로그 게시물) *
- HTML을 구문 분석하는 데 정규식을 사용하지 마십시오.
- 하지 마십시오 .
제발 하지마
- 글쎄, 아마도 ... 당신이 정말로 결심 했다면 (이 질문의 다른 답변도 좋습니다)
- 하지 마십시오 .
regex 엔진이 실패 할 수있는 regex의 예
도구 : 테스터 및 설명자
(이 섹션에는 비 스택 오버플로 링크가 포함되어 있습니다.)
온라인 (* 교체 테스터 포함, + 분할 테스터 포함) :
- Debuggex (유용한 정규식 저장소도 있음) javascript , python , pcre
- * 정규 표현식 101 php , pcre , python , javascript
- Regex Pal , regular-expressions.info 자바 스크립트
- Rubular 나 루비
RegExr
정규식 영웅 DOTNET
- * + regexstorm.net .net
- * RegexPlanet : Java java , Go go , Haskell haskell , JavaScript javascript , .NET dotnet , Perl perl php PCRE php , Python python , Ruby ruby , XRegExp xregexp
freeformatter.comxregexp- * + php PCRE 및 POSIX, javascript
regex.larsolavtorvik.com - Refiddle 자바 스크립트 Ruby .net
오프라인 :
- Microsoft Windows : RegexBuddy (분석), RegexMagic (생성), Expresso (분석, 생성, 무료)