先决条件:如何编写正则表达式?
正则表达式是用于搜索模式的字符序列。它主要用于与字符串进行模式匹配或字符串匹配等。它们是一种将模式与字符序列进行匹配的通用方法。它在每种编程语言(例如C++, Java和Python。
POSIX库中的模式
Expression | Description |
---|---|
[] | Used to find any of the characters or numbers specified between the brackets. |
[:number:] | Used to find any digit. |
[:lower:] | Used to find lowercase alphabets. |
[:word:] | Used to find letters numbers and underscores. |
创建正则表达式
为了编译或创建正则表达式,使用regcomp()函数。它包含三个参数:
句法:
regcomp(®ex, expression, flag)
在哪里,
- regex是指向匹配和存储表达式的内存位置的指针。
- 表达式是字符串类型
- 指定编译类型的标志
返回值:这将返回如下所示的值:
- 0 :编译成功时。
- Error_code :表达式的编译不成功时。
下面是regcomp()函数的图示:
C
// C program for illustration of regcomp()
#include
#include
// Driver Code
int main()
{
// Variable to create regex
regex_t regex;
// Variable to store the return
// value after creation of regex
int value;
// Function call to create regex
value = regcomp(®ex, "[:word:]", 0);
// If compilation is successfull
if (value == 0) {
printf("RegEx compiled successfully.");
}
// Else for Compilation error
else {
printf("Compilation error.");
}
return 0;
}
C
// C program to illustrate the regexec() function
#include
#include
// Function to print the result
void print_result(int value)
{
// If pattern found
if (value == 0) {
printf("Pattern found.\n");
}
// If pattern not found
else if (value == REG_NOMATCH) {
printf("Pattern not found.\n");
}
// If error occured during Pattern
// matching
else {
printf("An error occured.\n");
}
}
// Driver Code
int main()
{
// Variable to store initial regex()
regex_t regex;
// Variable for return type
int value;
int value2;
// Creation of regEx
value = regcomp(®ex, "Welcome to GfG", 0);
// Comparing pattern "GeeksforGeeks" with
// string in reg
value = regexec(®ex, "GeeksforGeeks",
0, NULL, 0);
// Creation of regEx
value2 = regcomp(®ex, "GeeksforGeeks", 0);
// Comparing pattern "Geeks"
// with string in reg
value2 = regexec(®ex, "GeeksforGeeks",
0, NULL, 0);
// Print the results
print_result(value);
print_result(value2);
return 0;
}
输出
RegEx compiled successfully.
使用正则表达式匹配模式
regexec()函数用于将字符串与模式进行匹配。它包含五个参数:
- 预编译模式
- 需要在其中搜索模式的字符串。
- 有关比赛位置的信息。
- 用于指定匹配行为更改的标志。
句法:
regexec(®ex, expression, 0, NULL, 0);
其中,regex =预完成的模式,
expression =要在正则表达式中匹配的模式,
NULL =有关比赛位置的信息。
flag =指定匹配行为的变化
返回值:这将返回如下所示的值:
- 0 :如果有匹配项。
- REG_NOMATCH :如果没有匹配项。
下面是regexec()函数的图示:
C
// C program to illustrate the regexec() function
#include
#include
// Function to print the result
void print_result(int value)
{
// If pattern found
if (value == 0) {
printf("Pattern found.\n");
}
// If pattern not found
else if (value == REG_NOMATCH) {
printf("Pattern not found.\n");
}
// If error occured during Pattern
// matching
else {
printf("An error occured.\n");
}
}
// Driver Code
int main()
{
// Variable to store initial regex()
regex_t regex;
// Variable for return type
int value;
int value2;
// Creation of regEx
value = regcomp(®ex, "Welcome to GfG", 0);
// Comparing pattern "GeeksforGeeks" with
// string in reg
value = regexec(®ex, "GeeksforGeeks",
0, NULL, 0);
// Creation of regEx
value2 = regcomp(®ex, "GeeksforGeeks", 0);
// Comparing pattern "Geeks"
// with string in reg
value2 = regexec(®ex, "GeeksforGeeks",
0, NULL, 0);
// Print the results
print_result(value);
print_result(value2);
return 0;
}
输出
Pattern not found.
Pattern found.
想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。