我想知道是否有一种方法可以匹配文本中的所有内容,除非以\ t开头(缩进字符)。我目前正在尝试使用文字/[^\t]+\t/gm
来实现这一点,但是它不能正常工作,因为您可以看到here:
RegExr由gskinner.com创建,并由Media Temple自豪地托管。
编辑表达式和文本以查看匹配项。将比赛或表达式移至详细信息。支持RegEx的PCRE和Javascript版本。
侧栏包括备忘单,完整的参考和帮助。您还可以保存并与社区共享,并在“我的模式”中查看您创建或收藏的模式。
Explore results with the Tools below. Replace & List output custom results. Details lists capture groups. Explain describes your expression in plain English.
something
something2
所有东西都被匹配。理想的结果是停止使用“英语”一词。
答案 0 :(得分:0)
您当前在这里有两个匹配项-一个匹配项,包含文本的最个,并在something
之前的制表符处停止。然后,您有一个 second 匹配项,在下一行包含something
和以下制表符。
由于听起来好像您实际上不想匹配制表符,所以不要匹配\t
-您可以使用\S
来确保最后匹配的字符是非空格字符。另外,要确保匹配从行的开头开始,请使用^
进行锚定(以使\t
之后的文本不匹配):
^[^\t]+\S
答案 1 :(得分:0)
从您的示例中可以理解,您要匹配所有非以#define CURL_STATICLIB
#include <stdio.h>
#include <curl/curl.h>
#include <curl/types.h>
#include <curl/easy.h>
#include <string>
size_t write_data(void *ptr, size_t size, size_t nmemb, FILE *stream) {
size_t written;
written = fwrite(ptr, size, nmemb, stream);
return written;
}
int main(void) {
CURL *curl;
FILE *fp;
CURLcode res;
char *url = "http://localhost/aaa.txt";
char outfilename[FILENAME_MAX] = "C:\\bbb.txt";
curl = curl_easy_init();
if (curl) {
fp = fopen(outfilename,"wb");
curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp);
res = curl_easy_perform(curl);
curl_easy_cleanup(curl);
fclose(fp);
}
return 0;
}
字符开头的字符串。
您可以使用此
\t
^[^\t\n][\w\W]*?$
-字符串的开头。^
-断言不匹配的字符串,以tab或空白开头。[^\t\n]
-匹配任何零个或多个时间(惰性模式)。[\w\W]*?
-字符串结尾。示例代码
$