2012-08-06 46 views
1

如何搜索只包含字符集的字符串,包括x,并要求它包含x?例如[a-z]+但如果它不包含x则不匹配。正则表达式:括号内的必填字符

所以它应该匹配quux而不是foobar

+1

你的问题是矛盾的,你说只有字符'x,y和/或z',然后继续说'az'和'quux'应该匹配。 – 2012-08-06 15:52:34

+0

这不是我所说的“x,y和/或z”,而是我编辑它来澄清。 – Jordan 2012-08-06 15:57:41

+0

所以你真的只希望它匹配“x”。因为通过你的逻辑,'yyz'不匹配,但'abx'将匹配表达式不匹配的 – 2012-08-06 15:59:07

回答

2

假设你想接着匹配后跟零个或多个yz[yz]*)只有X,Y或Z,比赛开始(^)的字符串一个x后跟零个或更多xyz[xyz]*),随后结束($

^[yz]*x[xyz]*$ 

如果你试图匹配[a-z]但与x在那里的某个地方,那么这应该这样做

^[a-z]*x[a-z]*$ 
2

[a-z]*x[a-z]*应该做的伎俩。

+0

,他要求只匹配字符x,y和/或z的正则表达式(即不是a, b,c,...) – 2012-08-06 15:51:43

+0

答案很好;由'x,y和/或z'表示任何一组字符,这就是为什么我没有写'x','y'和/或'z''的原因。 – Jordan 2012-08-06 15:59:52

4

尝试这样的事情

^[a-z]*x[a-z]*$

+0

在第一个字符类别 – 2012-08-06 15:54:00

+0

中不需要'x',它不是必需的,但它不会伤害任何东西。如果它是一个非常重要的代码块,需要优化,它将消除回溯的需要,但我认为这并不重要。 – 2012-08-06 15:56:06

+0

这将匹配'123 @ xyz.com'你应该有编辑的起始和结束分隔符 – 2012-08-06 16:01:50