2010-10-18 179 views
0

我正在尋找一個正則表達式,以滿足我在下面解釋的特定需求之一。我相信這可能是非常簡單的&基本爲正則表達式專家。簡單的正則表達式問題

一個正則表達式,它匹配一行中的一個或多個單詞。考慮這條線:

QRYNUMB0007 = SELECT EMPLOYEEID, FIRSTNAME, LASTNAME, EMAIL, CITY, STATE, COUNTRY FROM EMPLOYEE WHERE EMPLOYEEID = ? 

在這種情況下,例如,我想找出是否的話,我搜索/查找選擇FIRSTNAMEEMPLOYEE在同一條線上可用。在這種情況下,行中出現的單詞的順序並不重要,但所有3個單詞應該出現在同一行中。

+0

@eumiro:正如我曾在我的問題已經指出,對詞的出現順序在這種情況下並不重要。 – Gnanam 2010-10-18 10:21:31

回答

2

如果你想選擇這些

/select|firstname|employee/i 

如果你想真正找到所有他們

/select/i && /firstname/i && /employee/i 

的同時,根據您的語言,事情可以更簡單,如Python中的任何一個

STRING=mystring.lower() 
if "select" in STRING and "firstname" in STRING and "employee" in STRING: 
    print "...." 
+0

其實,我試圖在Linux vi編輯器中使用這個正則表達式。我在這裏還有另一個問題,在這個表達式中指定了EOL(行尾)? – Gnanam 2010-10-18 10:29:36

1

嘗試 alternation

SELECT|FIRSTNAME|EMPLOYEE 

好了,正則表達式並不真正支持AND運算符,如其他人所說。由於您在vim中,因此您無法在語言級別訪問該操作員。

您可以嘗試排列:

/SELECT.*FIRSTNAME.*EMPLOYEE|SELECT.*EMPLOYEE.*FIRSTNAME/ 

或者,避免像EMPLOYEEFIRSTNAME匹配的東西:

/SELECT.+FIRSTNAME.+EMPLOYEE|SELECT.+EMPLOYEE.+FIRSTNAME/ 
+0

édéric:所有3個單詞都應該出現,而不是其中任何一個。 – Gnanam 2010-10-18 10:35:28