참조-이 정규식은 무엇을 의미합니까?
이게 뭐야?
일반적인 Q & A 모음입니다. 이것은 또한 커뮤니티 위키이므로 모든 사람이 유지 관리에 참여하도록 초대됩니다.
왜 이런거야?
정규식 은 설명없이 코드 유형의 질문과 잘못된 답변 을 제공하는 데 어려움을 겪고 있습니다 . 이 참조는 품질 Q & A에 대한 링크를 제공하기위한 것입니다.
범위는 무엇입니까?
이 참조는 php , perl , javascript , python , ruby , java , .net 언어를 의미합니다 .
너무 광범위 할 수 있지만 이러한 언어는 동일한 구문을 공유합니다. 특정 기능의 경우 그 뒤에 언어 태그가 있습니다. 예 :
- 정규식 균형 그룹이란 무엇입니까? .그물
답변
980 aliteralmind
스택 오버플로 정규식 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
: 현재 위치 perle
: expression php perlo
: once rubym
: multiline php perl python javascript .net java ,m
: (non) multiline rubys
: 한 줄 ( javascript 또는 ruby에서 지원하지 않음 ),s
해결 방법 javascriptS
: study phpU
: 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
- 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 나 루비
- * + 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.com
xregexp- * + php PCRE 및 POSIX, javascript
regex.larsolavtorvik.com
- Refiddle 자바 스크립트 Ruby .net
오프라인 :
- Microsoft Windows : RegexBuddy (분석), RegexMagic (생성), Expresso (분석, 생성, 무료)