在scanf中使用正規表示式

2021-08-26 21:27:58 字數 1461 閱讀 2059

內是匹配的字元,^表示求反集,當遇到非集合內的字元時立即終止輸入

1.輸入指定範圍的小寫字母,遇到非法字元立即終止

scanf("%[a-z]",str1);

printf("%s\n",str1);

輸入:abc123

輸出:ab

//輸入帶空格的自定範圍的字串

scanf("%[a-z a-z0-9]", str1);

printf("%s\n",str1);

輸入:abc123 def 456

輸出:abc 123 def 456

scanf("%[a-z0-9]", str1);

printf("%s\n",str1);

輸入:abc123

輸出:abc

2.輸入不包括指定字元的字元

scanf("%[^a-z]", str1);

printf("%s\n",str1);

輸入:123456abc123

輸出:123456

注意:這種方式可以讀入空格

scanf("%[^\n]", str1);

printf("%s\n",str1);

//讀入一整行字串,包括空格

輸入:abc123 def

輸出:abc123 def

scanf("%[^a-d0-9]", str1);

printf("%s\n",str1);

輸入:defxy89

輸出:defxy

我們來看看百分號表示什麼意思:

%表示選擇,%後面的是條件,比如"%s",s是乙個條件,表示任意字元,"%s"的意思是:只要輸入的東西是乙個字元,就把它拷貝給str。"%3s"又多了乙個條件:只拷貝3

個字元。 「%[a-z]」的條件稍微嚴格一些,輸入的東西不但是字元,還得是乙個小寫字母的字元。

%* 與%剛好相反,表示過濾滿足條件的字元,也就是跳過滿足條件的字元,其後一定要有新的%語句,否則無法讀入

3.跳過指定範圍的字元再讀取指定範圍的字元

scanf("%*[a-z0-9]%[^\n]",str1);

printf("%s\n",str1);

輸入:a1b2c3abcdef 123

輸出:abc def 123

4.%和%*組合使用可以提取指定字串

從中提取tom

const

char* url = "";

char uri[10] = ;

sscanf(url,"%*[^:]:%[^@]", uri);

printf("%s ",uri);

從iios/12ddwdff@122中提取12ddwdff

const char* s = "iios/12ddwdff@122";

char buf[20];

sscanf(s, "%*[^/]/%[^@]", buf);

在UltraEdit中使用正規表示式

在ultraedit中使用正規表示式 刪除空行 替換 t p 為 空串 刪除行尾空格 替換 t 為 空串 刪除行首空格 替換 t 為 空串 每行設定為固定的4個空格開頭 替換 t t p 為 1 每段設定為固定的4個空格開頭 替換 t 為 如果一行是以空格開始的,則視之為一段的開始行 將一段合併為一...

在DELPHI中使用正規表示式

在網上發現,有多種方法可在delphi中使用正規表示式。竊以為直接使用微軟的regexp物件會比較簡單,無需額外工作。使用微軟regexp方法 2.註冊vbscript.dll regsvr32 命令,若安裝過vb或ie5以上會預設安裝該dll 3.在delphi中引入 microsoft vbsc...

在UltraEdit中使用正規表示式

刪除空行 替換 t p 為 空串 刪除行尾空格 替換 t 為 空串 刪除行首空格 替換 t 為 空串 每行設定為固定的4個空格開頭 替換 t t p 為 1 每段設定為固定的4個空格開頭 替換 t 為 如果一行是以空格開始的,則視之為一段的開始行 將一段合併為一行 替換 t p t p 為 1 注意...