您好我想在PHP的C文件中計算運算符類似於+, - ,++, - ,< <,>>,!=,* =,...等 Is there用正則表達式對它進行計數的方法(類似於++和+的計數將會計爲2而不是3)?運算符在PHP中的正則表達式C
回答
你可以使用這個表達式:
(\+\+|--|==|>=|<=|!=|<<|>>|!=|\+=|-=|\*=|\/=|%=|\+|-|\*|%|=)
然後僅計算匹配的數量。像這樣:
$code = file_get_contents("cfile.c");
preg_match_all("/(\+\+|--|==|>=|<=|!=|<<|>>|!=|\+=|-=|\*=|\/=|%=|\+|-|\*|%|=)/", $code, $matches);
$num_operators = count($matches[0]);
注:如果您還希望包括邏輯運算符&&
,||
,!
,然後把它們添加到該模式的結尾,就像這樣:
(\+\+|--|==|>=|<=|!=|<<|>>|!=|\+=|-=|\*=|\/=|%=|\+|-|\*|%|=|&&|\|\||!)
\ B([+ *(%)= - ] | [><!+ * /% - ] = |([<> + = | - ])\ 2))\ b – AaronM
第一組是單曲,第二組其次是一個=第三組是雙打。第三組可能不適用於某些正則表達式編譯器,因爲它使用了嵌入式後向引用。 – AaronM
感謝你們兩人,它完美的作品:) – user3381194
正則表達式根本無法勝任這項工作。
考慮下面的代碼,例如:
/***************************************************************
There are no multiplication or division operators in this file
***************************************************************/
#include <stdio.h> // No comparison operators either
#define _ -
int main() {
int a=0,b=~6;
printf("%s\n","Hello?"); // No modulus or ternary operators :-\
a += b; // Not even an addition operator
printf("a is still equal to %d\n",a); // See what I mean?
a = a _ b _ b _ b _ b _ b _ b; // But there are 6 subtraction operators
printf("The answer is %d\n",a); // Would your regex find those??
return 0;
}
有很多在這個文件中的陷阱,將是非常困難的,以避免與正則表達式。 (不要讓我開始trigraphs。)
要正確地做到這一點,你應該首先通過預處理器將源代碼(如gcc -E
)來剝去的意見,擴大#define
語句。之後,你可能會更好地使用lexical analyzer來解析結果。
- 1. 非運算符在正則表達式
- 2. xml正則表達式/正則表達式或運算符
- 3. C + +搜索「正則表達式運算符」與正則表達式
- 4. 正則表達式不是運算符
- 5. 正則表達式「AND」運算符?
- 6. 正則表達式或運算符
- 7. OCaml |正則表達式運算符
- 8. Chaning Ruby正則表達式運算符
- 9. 沒有正則表達式運算符*
- 10. RFC正則表達式運算符
- 11. 正則表達式不是運算符
- 12. 正則表達式前瞻運算符
- 13. OR運算符在PHP正則表達式(包括Unicode驗證)
- 14. 像gmail搜索運算符的正則表達式 - PHP preg_match
- 15. 將Java正則表達式運算符轉換爲Scala正則表達式
- 16. VBA-像運算符vs正則表達式(VBScript正則表達式5.5)
- 17. 在AWK中匹配多行的正則表達式。 &&運算符?
- 18. 在正則表達式中的R AND運算符
- 19. 邏輯運算符AND與php正則表達式
- 20. 在正則表達式中是否存在(!)運算符?
- 21. 在C#中的正則表達式(來自PHP的正則表達式)
- 22. 正則表達式在c中的正則表達式#
- 23. Python的正則表達式:XOR運算
- 24. 正則表達式中的#符號php
- 25. 如何在正則表達式中使用OR運算符?
- 26. 如何在正則表達式中使用OR運算符
- 27. AND運算符在正則表達式中?
- 28. 如何在正則表達式中提供OR運算符?
- 29. 轉換PHP正則表達式C#正則表達式
- 30. 正則表達式'|'運算符vs每個子表達式的單獨運行
正則表達式?別。這不是正確的工具。 –
這真的取決於你需要的準確度。如果你真的需要一個確切的計數,關於使用詞法分析器的答案是正確的。下面的正則表達式答案應該能讓你得到一個粗略的數字,但它會遭受誤報,因爲它會提供一個char或char對計數,而不是一個真正的算子計數。 – AaronM