遇到問題不斷補充中
該**並未使用字首表示式或者字尾表示式,直接處理字串,按照字串順序進行處理表示式
注意 code from nekenet
該**量比字首表示式求正則 和字尾表示式求正則 要少很多
```c
//regular expression evaluation
#if 1
#includeint pos;
int compute(char* data)
/** convert string to number !!!it's a good skill to transform string to num
int isdigit(char a ); introduce how to use isdigit
#include#includeint main()
if (isdigit(c))
return 0;}
**/ while (pos < len && isdigit(data[pos]))
//condition 3
switch (flag)
num = 0;
flag = data[pos];
//condition 4
if (data[pos] == '}' || data[pos] == ']' || data[pos] == ')')
pos++;
} int res = 0;
for (int i = 0; i <= top; i++)
return res;
}int main()
return 0;
}#endif
``字尾表示式主要是使用棧的資料結構來實現,學習使用字尾表示式來求運算字串時(例如:2+4*(3+5) ),需要對棧了解比較清楚,可以使用陣列棧的形式,也可以使用鍊錶棧的形式。建議最好畫框架圖來分析字尾表示式運算時對各種判斷的優先順序,加強對**的理解。
#include
#include
#include
#include
#include
"type.h"
#define maxn 100
extern in n;
extern ch m;
/*description: use to judge the priority with c1,c2
if c1 is high level ,return 1
else return 0;
*/int
ishigh
(char c1,
char c2)
else
if(c2 ==
'*'|| c2 ==
'/')}if
(c1 ==
'*'|| c1 ==
'/')
if(c1 ==
'(')}/*
operate + - * /
*/int
calcpro
(int a,
int b,
int ch)}/*
convert infix expression to postfix expression
*/int
compute1
(char
* str)
'|| str[pos]
==']'
) str[pos]
=')';}
pos =0;
//when input a new str, we need initialize pos
//while (pos < len)
/*description
when str[pos] is ')' ,before pop chstack a '(' ,we need pop intstack n1 ,n2 ,and pop chstack ch1,compute the n1 ch n2,and push the temp into intstack.
*/if
(str[pos]
==')'
) ch1 =
stackarraypopch()
;continue;}
if(str[pos]
=='+'
|| str[pos]
=='-'
|| str[pos]
=='*'
|| str[pos]
=='/'
)else
else
continue;}
}int n1=0;
while
(isdigit
(str[pos]))
if(n1 !=0)
stackarraypushin
(n1)
; n1 =0;
pos--;}
while
(stackarrayemptych()
==0)else
return
stackarraypopin()
;}int res;
res =
stackarraypopin()
;return res;
//}}
正規表示式 正規表示式 總結
非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 非正浮點數 d d 0 0 負浮點數 正浮點數正則式 英文本串 a za z...
js 正規表示式之環視結構
1 環視不 占用 字元,只匹配字元所在的特定位置。2 正規表示式是從左向右進行匹配的。子表示式匹配當前位置的右側字元 圖中 紅色表示當前位置,綠色表示正則匹配,黃色表示斷言匹配 1 起始位為0 2 從左向右檢視文字,如果當前位置字元與表示式2匹配成功,就檢視右側文字是否滿足斷言條件,當條件1與條件2...
正規表示式 表示式
網域名稱 a za z0 9 a za z0 9 a za z0 9 a za z0 9 interneturl a za z s 或 http w w w 手機號碼 13 0 9 14 5 7 15 0 1 2 3 5 6 7 8 9 18 0 1 2 3 5 6 7 8 9 d 號碼 x x x...