2010-10-18 81 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