Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C正则表达式获取字符串的位置并替换另一个字符串_C_Regex - Fatal编程技术网

C正则表达式获取字符串的位置并替换另一个字符串

C正则表达式获取字符串的位置并替换另一个字符串,c,regex,C,Regex,Q1.我想在用户输入字符串中匹配&JOY,例如,bla-bla&JOY-bla&JOY-bla 如何编写正则表达式,是否有任何C正则表达式函数可以返回匹配发生的所有位置? 如果我想用另一个字符串替换&JOY,是否有一个方便的C函数来执行此操作?看起来您的正则表达式不是很有趣。它只会是: &JOY 换句话说,看起来您只是在尝试匹配一个文字子字符串。如果这就是你要做的,我就不会像用大锤敲图钉一样麻烦正则表达式了。看起来你的正则表达式不会很有趣。它只会是: &JOY 换句话说,看起

Q1.我想在用户输入字符串中匹配&JOY,例如,bla-bla&JOY-bla&JOY-bla 如何编写正则表达式,是否有任何C正则表达式函数可以返回匹配发生的所有位置?
如果我想用另一个字符串替换&JOY,是否有一个方便的C函数来执行此操作?

看起来您的正则表达式不是很有趣。它只会是:

&JOY

换句话说,看起来您只是在尝试匹配一个文字子字符串。如果这就是你要做的,我就不会像用大锤敲图钉一样麻烦正则表达式了。

看起来你的正则表达式不会很有趣。它只会是:

&JOY

换句话说,看起来您只是在尝试匹配一个文字子字符串。如果这就是你所要做的,我不会像用大锤敲大头钉一样麻烦你使用正则表达式。

C标准库不提供正则表达式函数。但是,由于您的示例查找固定字符串,因此不需要正则表达式。子字符串搜索就足够了。可通过以下功能实现:

#include <string.h>
..........

char* text = "bla bla &JOY bla bla &JOY blabla";
char* pattern = "&JOY";
char* substr_ptr;
int pos;

while ( substr_ptr = strstr(pattern, text) )
{
    pos = substr_ptr - text;
    printf("found at %d\n", pos);
}
至于你的第二个问题——不,没有这样的功能。您必须手动执行此操作:

如果替换字符串的长度与要替换的子字符串的长度相同,只需就地覆盖它; 否则,您将不得不为结果字符串分配内存,并在子字符串出现之前将三部分复制到原始字符串,替换字符串和原始字符串的其余部分。
C标准库不提供正则表达式函数。但是,由于您的示例查找固定字符串,因此不需要正则表达式。子字符串搜索就足够了。可通过以下功能实现:

#include <string.h>
..........

char* text = "bla bla &JOY bla bla &JOY blabla";
char* pattern = "&JOY";
char* substr_ptr;
int pos;

while ( substr_ptr = strstr(pattern, text) )
{
    pos = substr_ptr - text;
    printf("found at %d\n", pos);
}
至于你的第二个问题——不,没有这样的功能。您必须手动执行此操作:

如果替换字符串的长度与要替换的子字符串的长度相同,只需就地覆盖它; 否则,您将不得不为结果字符串分配内存,并在子字符串出现之前将三部分复制到原始字符串,替换字符串和原始字符串的其余部分。
R1。可以是&JOY或&JOY以获取子字符串。使用regex.h在C中执行此操作


R2。如果还有其他更高级的正则表达式,请使用并实现您自己的函数。它非常简单。

R1。可以是&JOY或&JOY以获取子字符串。使用regex.h在C中执行此操作

R2。如果还有其他更高级的正则表达式,请使用并实现您自己的函数。这很简单