정규식은 입력 텍스트와 일치하는 패턴입니다. .Net 프레임워크는 이러한 일치를 허용하는 정규식 엔진을 제공합니다. 패턴은 하나 이상의 문자, 연산자 및 구조로 구성됩니다.
정규식 정의
아래에는 정규식을 정의하는 데 사용되는 문자, 연산자 및 구조의 다양한 범주가 나와 있습니다.
문자 이스케이프
문자 클래스
앵커
그룹 구성
예선자
역참조 구성
대체 공사
교체
기타 constructors
문자 이스케이프
정규 표현식의 백슬래시 문자( )는 그 뒤에 오는 문자가 특수 문자이거나 문자 그대로 해석되어야 함을 나타냅니다.
다음 표에는 이스케이프 문자가 나열되어 있습니다.
| 이스케이프 문자 | 설명 | 패턴 | 일치 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| a | 은 알람(벨) 기호 u0007과 일치합니다. | a | 'u0007' | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| b | 의 "경고!" + "u0007"은 백스페이스 키 u0008과 일치합니다. | [b]{3,} | "bbbb" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| t | 의 "bbbb"는 탭 문자 u0009와 일치합니다. | (w+)t | "NametAddrt" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| r | 의 "Namet" 및 "Addrt"는 캐리지 리턴 문자 u000D와 일치합니다. (r은 개행 문자 n과 동일하지 않습니다.) | rn(w+) | "rHellonWorld." | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| v | 의 "rnHello"는 세로 탭 문자 u000B와 일치합니다. | [v]{2,} | "vvv" in "vvv" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| f | 은 폼 피드 문자 u000C와 일치합니다. | [f]{2,} | "fff" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| n | 의 "fff"는 개행 문자 u000A와 일치합니다. | rn(w+) | "rnHello" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| e | 의 "rHellonWorld."는 이스케이프 문자 u001B와 일치합니다. | e | "x001B" in "x001B" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| nnn | 은 8진수 표현을 사용하여 문자를 지정합니다(nnn은 2~3자리 숫자로 구성됨). | w c x | 는 X 또는 x로 지정된 ASCII 제어 문자와 일치합니다. 여기서 X 또는 x는 제어 문자의 문자입니다. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| "x0003" in "x0003"(Ctrl-C) | u nnnn | 은 16진수 표현을 사용하여 유니코드 문자(nnnn으로 표시되는 4자리 숫자)와 일치합니다. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| "a bc d" | 의 "a b" 및 "c d"는 인식할 수 없는 이스케이프 문자가 뒤에 오면 일치합니다. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| "(2+2) * 3*9"("2+2" 및 "3*9" | ) |
| 문자 클래스 | 설명 | 패턴 | 은 |
|---|---|---|---|
| 과 일치합니다. | 은 문자 그룹의 모든 단일 문자와 일치합니다. 기본적으로 일치는 대소문자를 구분합니다. | [mn] | "mat"의 "m", "moon"의 "m" 및 "n" |
| [^character_group] | Non: 문자 그룹 일치에 없는 단일 문자 포함. 기본적으로 Character_group의 문자는 대소문자를 구분합니다. | [^aei] | "avail" |
| [ first - last ] | 문자 범위: 처음부터 끝까지 범위에 있는 모든 단일 문자와 일치합니다. | (w+)t | "NametAddrt" |
| . | Wildcard의 "Namet" 및 "Addrt": n을 제외한 모든 단일 문자와 일치합니다. 원래 마침표 문자(. 또는 u002E)와 일치시키려면 문자 앞에 이스케이프 문자(.)를 붙여야 합니다. | a.e | "ave" in "have", "ate" in "mate" |
| p{ name } | 및 name 단일 유니코드 범용 카테고리 또는 명명된 블록 지정 문자 일치. | p{Lu} | "City Lights" |
| P{ name } | 의 "C" 및 "L"은 단일 유니코드 범용 카테고리 또는 로 지정되지 않은 명명된 블록과 동일하지 않습니다. name 문자 매칭. | P{Lu} | "City" |
| w | 의 "i", "t" 및 "y"는 모든 단어 문자와 일치합니다. | w | "R", "o", "m" 및 "1" in "Room#1" |
| W | 은 단어가 아닌 문자와 일치합니다. | W | "Room#1" |
| s | 의 "#"은 모든 공백 문자와 일치합니다. | ws | "ID A1.3"의 "D " |
| S | 은 공백이 아닌 모든 문자와 일치합니다. | sS | "int __ctr" |
| d | 의 " _"는 모든 십진수와 일치합니다. | d | "4 = IV" |
| D | 의 "4"는 십진수가 아닌 모든 문자와 일치합니다. | D | " ", "=", " ", "4 = IV"의 "I" 및 "V" |
Anchors
앵커 또는 너비가 0인 원자 어설션은 문자열의 현재 위치에 따라 일치가 성공하거나 실패하도록 하지만 엔진이 문자열에서 앞으로 나아가거나 문자를 사용하게 하지는 않습니다.
앵커 포인트는 다음 표에 나열되어 있습니다.
| Assertion | Description | Pattern | Match |
|---|---|---|---|
| ^ | 일치 항목은 문자열이나 줄의 시작 부분에서 시작해야 합니다. | ^d{3} | "567-777-" |
| $ | 의 "567"은 문자열 끝이나 줄이나 문자열 끝의 n 앞에 와야 합니다. . | -d{4}$ | "8-12-2012" |
| A | 의 "-2012"는 문자열 시작 부분에 나타나야 합니다. | Aw{4} | "Code-007-" |
| Z | 의 "코드"는 문자열 끝이나 문자열 끝의 n 앞에 나타나야 합니다. | -d{3}Z | "Bond-901-007" |
| z | 의 "-007"은 문자열 끝에 표시되어야 합니다. | -d{3}z | "-901-333" |
| G | 의 "-333"은 이전 경기가 끝난 위치에 나타나야 합니다. | \G(d) | "(1)(3)(5)[7](9)" |
| 의 "(1)", "(3)" 및 "(5)" b | 일치는 w(영숫자) 문자와 W(영숫자가 아닌) 문자 사이의 경계에서 발생해야 합니다. | w | "Room#1" |
| B | 에서 "R", "o", "m" 및 "1"과 일치하는 항목은 b 경계에서 발생하면 안 됩니다. | Bendw*b | "끝은 지속 대출 기관을 보냅니다"의 "끝" 및 "엔더" |
그룹 구문
그룹 구문은 정규식의 하위 표현식을 설명하며 일반적으로 입력 문자열의 하위 문자열을 캡처하는 데 사용됩니다.
다음 표에는 그룹화 구문이 나열되어 있습니다.
| 그룹화 구문 | Description | Pattern | Match |
|---|---|---|---|
| ( 하위 표현식 ) | 일치하는 하위 표현식 캡처 0부터 시작하여 할당합니다. 일련 번호. | (w)1 | "ee" in "deep" |
| (?< name >subexpression) | 은 일치하는 하위 표현식을 명명된 그룹으로 캡처합니다. | (?< double>w)k< double> | "deep" |
| (?< name1 -name2 >subexpression) | 의 "ee"는 균형 그룹 정의를 정의합니다. | (((?'열기'()[^()]*)+((?'닫기-열기'))[^()]*)+)*(?(열기)(?!))$ | "((1-3)*(3-1))" in "3+2^((1-3)*(3-1))" |
| (?: 하위 표현식) | 비캡처 그룹을 정의합니다. | Write(?:Line)? | "Console.WriteLine()" |
| (?imnsx-imnsx:subexpression) | 의 "WriteLine"은 subexpression에 지정된 옵션을 적용하거나 비활성화합니다. | Ad{2}(?i:w+)b | "A12xl A12XL a12xl" |
| (?= subexpression) | 너비가 0인 긍정적 예측 어설션의 "A12xl" 및 "A12XL". | w+(?=.) | "그는 그렇습니다. The dog ran. The sun is out." |
| (?! 하위 표현) | 의 "is", "ran" 및 "out" 너비가 0인 부정 예측 어설션. | b(?!un)w+b | "unsuresure unity Used"에서 "sure" 및 "used" |
| (?< =subexpression) | 어설션은 0을 검토한 후 만들어집니다. 너비 . | (?<=19)d{2}b | "1851 1999 1950 1905 2003" |
| (?< ! 하위 표현식) | 의 "99", "50" 및 "05" 너비가 0인 부정 되돌아보기 어설션. | (?< !19)d{2}b | "end sends persist 대출자" |
| (?> 하위 표현식) | 비회고적(또한 알려짐)의 "ends" 및 "ender" "탐욕스러운"의 경우) 하위 표현식입니다. | [13579](?>A+B+) | "1ABB 3ABBC 5AB 5AC"의 "1ABB", "3ABB" 및 "5AB" |
Instance
using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string input = "1851 1999 1950 1905 2003";
string pattern = @"(?<=19)\d{2}\b";
foreach (Match match in Regex.Matches(input, pattern))
Console.WriteLine(match.Value);
}
}인스턴스 실행 »
온라인 인스턴스를 보려면 "인스턴스 실행" 버튼을 클릭하세요
Qualifier
Qualifier는 일치 항목이 발생하기 위해 입력 문자열에 있어야 하는 이전 요소(문자, 그룹 또는 문자 클래스일 수 있음)의 인스턴스 수를 지정합니다. 한정자에는 다음 표에 나열된 언어 요소가 포함됩니다.
다음 표에는 자격이 나열되어 있습니다.
| 한정자 | 설명 | 패턴 | 일치 |
|---|---|---|---|
| * | 이전 요소와 0번 이상 일치합니다. | d*.d | ".0", "19.9", "219.9" |
| + | 은 이전 요소와 한 번 이상 일치합니다. | "be+" | "been" in "bee", "be" in "bent" |
| ? | 은 이전 요소와 0번 또는 1번 일치합니다. | "rai?n" | "ran", "rain" |
| {n } | 은 이전 요소와 정확히 n번 일치합니다. | ",d{3}" | "",043" in "1,043.6", ",876", ",543" 및 ",210" in "9,876,543,210" |
| { n ,} | 이전 요소를 n번 이상 일치시킵니다. | "d{2,}" | "166", "29", "1930" |
| {n , m } | 이전 요소와 최소 n회 일치하지만 m회 이하 . | "d{3,5}" | "166", "17668", "193024" |
| *? | 의 "19302"는 이전 요소와 0번 이상 일치하지만 가능한 적은 횟수로 일치합니다. | d*?.d | ".0", "19.9", "219.9" |
| +? | 이전 요소와 한 번 이상 일치하지만 가능한 한 적은 횟수로 일치합니다. | "be+?" | "be" in "been", "be" in "bent" |
| ?? | 은 이전 요소와 0 또는 1번 일치하지만 가능한 한 적은 횟수로 일치합니다. | "rai??n" | "ran", "rain" |
| {n }? | 은 선행 요소와 정확히 n번 일치합니다. | ",d{3}?",043" in " | "1,043.6", ",876", ",543" 및 ",210" in "9,876,543,210" |
| {n ,} ? | 이전 요소를 최소한 n번 일치시키되, 가능한 적은 횟수로 일치시키세요. | "d{2,}?" | "166", "29" and "1930" |
| {n , m }? | 이전 요소가 일치하는 횟수는 n에서 n 사이입니다. m , 그러나 가능한 한 적은 횟수입니다. | "d{3,5}?" | "166", "17668", "193024" |
역참조 구성
역참조를 사용하면 동일한 정규 표현식 내에서 이전에 일치했던 하위 표현식을 나중에 식별할 수 있습니다.
다음 표에는 역참조 구문이 나열되어 있습니다.
| 역참조 구문 | 설명 | 패턴 | 은 |
|---|---|---|---|
| 번호 | 역참조와 일치합니다. 숫자 하위 표현식의 값과 일치합니다. | (w)1 | "ee" |
| k< name > | 에서 역참조를 찾습니다. 명명된 표현식의 값과 일치합니다. | (?< char>w)k< char> | "seek"의 "ee" |
대체 구문
대체 구문은 정규식을 수정하여 둘 중 하나 또는 일치를 활성화하는 데 사용됩니다.
다음 표에는 대체 구문이 나열되어 있습니다.
| 대체 구문 | Description | Pattern | 일치 |
|---|---|---|---|
| | | 은 세로 막대(| ) 문자. | th(e|is|at) | "this is the day. " |
| (?( 표현식 )yes | no ) | if 정규식 패턴 지정된 경우 표현식 일치에 따르면 yes와 일치하며, 그렇지 않으면 선택적 no 부분과 일치합니다. 표현식은 너비가 0인 어설션으로 해석됩니다. | (?(A)광고{2}b|bd{3}b) | "A10 C103 910"의 "A10" 및 "910" |
| (?( 이름)예 | 아니요 ) | 일치 예 이름이나 이름 또는 번호가 지정된 캡처링 그룹이 일치하는 경우, 그렇지 않으면 선택 사항인 아니요와 일치합니다. | (?< quoted>")?(?(quoted).+?"|S+s) | "Dogs.jpg "Yiska Playing.jpg"" 및 "Yiska Playing.jpg" |
Replacement
Replacement는 대체 패턴에 사용되는 정규식입니다.
다음 표에는 대체에 사용되는 문자가 나열되어 있습니다.
| 문자 | 설명 | 패턴 | 교체 패턴 | 입력 문자열 | 결과 문자열 |
|---|---|---|---|---|---|
| $ number | 교체 일치 하위 문자열 기준 그룹 number. | b(w+)(s)(w+)b | $3$2$1 | "하나 둘" | "둘 하나" |
| ${name} | 이름이 지정된 그룹 name으로 바꾸기 일치하는 하위 문자열. | b(?< word1>w+)(s)(?< word2>w+)b | ${word2} ${word1} | "하나 둘" | "둘 하나" |
| $$ | 는 "$" 문자를 대체합니다. | b(d+)s?USD | $$$1 | "103 USD" | "$103" |
| $& | 은 전체 경기의 사본을 대체합니다. | ($*(d*(.+d+)?){1}) | **$& | "$1.30" | "**$1.30**" |
| $` | 바꾸기 이전 입력 문자열의 모든 텍스트와 일치합니다. | B+ | $` | "AABBCC" | "AAAACC" |
| $' | 일치하는 입력 문자열의 모든 텍스트를 바꿉니다. | B+ | $' | "AABBCC" | "AACCC" |
| $+ | 은 마지막으로 캡처된 그룹을 대체합니다. | B+(C+) | $+ | "AABBCCDD" | AACCDD |
| $_ | 은 전체 입력 문자열을 대체합니다. | B+ | $_ | "AABBCC" | "AAAABBCCCC" |
기타 구문
다음 표에는 다양한 기타 구문이 나열되어 있습니다.
| Construction | 설명 | 예 |
|---|---|---|
| (?imnsx-imnsx) | 모드 중간에 대소문자 구분 등의 옵션을 설정하거나 비활성화합니다. | bA(?i)bw+b는 "ABA Able Act" |
| (?#comment) | 인라인 댓글의 "ABA" 및 "Able"과 일치합니다. 주석은 첫 번째 닫는 괄호에서 종료됩니다. | bA(?#A로 시작하는 단어와 일치)w+b |
| # [줄 끝] | 주석은 이스케이프되지 않은 #으로 시작하여 줄 끝까지 계속됩니다. | (?x)bAw+b#는 A |
Regex 클래스
Regex 클래스는 정규 표현식을 나타내는 데 사용됩니다.
다음 표에는 Regex 클래스에서 일반적으로 사용되는 몇 가지 메서드가 나열되어 있습니다.
| 일련 번호 | 메서드 및 설명 |
|---|---|
| 1 | public bool IsMatch(
문자열 입력
) Regex 생성자에 지정된 정규식이 지정된 입력 문자열에서 일치하는 항목을 찾았는지 여부를 나타냅니다. |
| 2 | public bool IsMatch(
문자열 입력,
int 시작
) Regex 생성자에 지정된 정규식이 문자열의 지정된 시작 위치에서 시작하여 지정된 입력 문자열에서 일치하는 항목을 찾는지 여부를 나타냅니다. |
| 3 | public static bool IsMatch(
문자열 입력,
문자열 패턴
) 지정된 정규식이 지정된 입력 문자열에서 일치하는 항목을 찾았는지 여부를 나타냅니다. |
| 4 | 공개 MatchCollection 일치(
문자열 입력
) 지정된 입력 문자열에서 정규식을 모두 검색합니다. |
| 5 | 공개 문자열 바꾸기(
문자열 입력,
문자열 교체
) 지정된 입력 문자열에서 정규식 패턴과 일치하는 모든 일치 문자열을 지정된 대체 문자열로 바꿉니다. |
| 6 | 공개 문자열[] 분할(
문자열 입력
) Regex 생성자에 지정된 정규식 패턴에 의해 정의된 위치를 기반으로 입력 문자열을 하위 문자열 배열로 분할합니다. |
Regex 클래스의 전체 속성 목록은 Microsoft의 C# 설명서를 참조하세요.
예제 1
다음 예는 'S'로 시작하는 단어와 일치합니다.
using System;
using System.Text.RegularExpressions;
namespace RegExApplication
{
class Program
{
private static void showMatch(string text, string expr)
{
Console.WriteLine("The Expression: " + expr);
MatchCollection mc = Regex.Matches(text, expr);
foreach (Match m in mc)
{
Console.WriteLine(m);
}
}
static void Main(string[] args)
{
string str = "A Thousand Splendid Suns";
Console.WriteLine("Matching words that start with 'S': ");
showMatch(str, @"\bS\S*");
Console.ReadKey();
}
}
}위 코드를 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다.
Matching words that start with 'S': The Expression: \bS\S* Splendid Suns
예제 2
다음 예는 'S'로 시작하는 단어와 일치합니다. 'm'으로 시작하고 'e'로 끝나는 S' 단어:
using System;
using System.Text.RegularExpressions;
namespace RegExApplication
{
class Program
{
private static void showMatch(string text, string expr)
{
Console.WriteLine("The Expression: " + expr);
MatchCollection mc = Regex.Matches(text, expr);
foreach (Match m in mc)
{
Console.WriteLine(m);
}
}
static void Main(string[] args)
{
string str = "make maze and manage to measure it";
Console.WriteLine("Matching words start with 'm' and ends with 'e':");
showMatch(str, @"\bm\S*e\b");
Console.ReadKey();
}
}
}위 코드를 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다.
Matching words start with 'm' and ends with 'e': The Expression: \bm\S*e\b make maze manage measure
예제 3
다음 예에서는 추가 공백을 바꿉니다.
using System;
using System.Text.RegularExpressions;
namespace RegExApplication
{
class Program
{
static void Main(string[] args)
{
string input = "Hello World ";
string pattern = "\s+";
string replacement = " ";
Regex rgx = new Regex(pattern);
string result = rgx.Replace(input, replacement);
Console.WriteLine("Original String: {0}", input);
Console.WriteLine("Replacement String: {0}", result);
Console.ReadKey();
}
}
} 위 코드를 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다.
Original String: Hello World Replacement String: Hello World
관련 동영상
핫 AI 도구
무료로 이미지를 벗다
사진에서 옷을 제거하는 온라인 AI 도구입니다.
사실적인 누드 사진을 만들기 위한 AI 기반 앱
더 현명한 결정을 위한 AI 기반 투자 연구
인기 기사
뜨거운 주제
20461
7
13602
4
11942
4
8945
17
8487
7
인기 있는 도구
사용하기 쉬운 무료 코드 편집기
중국어 버전, 사용하기 매우 쉽습니다.
강력한 PHP 통합 개발 환경
시각적 웹 개발 도구
신 수준의 코드 편집 소프트웨어(SublimeText3)












![PHP 실용 개발 시작하기: 빠른 PHP 생성 [중소기업 포럼]](https://img.php.cn/upload/course/000/000/035/5d27fb58823dc974.jpg)
