我正在努力学习处理正则表达式并进行一些练习但没有解决方案。一个问题是:所有小写单词除了' if'。
我能这样做吗:
[a-z][a-z]^[if] | [a-z][a-z][a-z]+
我希望一个单词至少包含两个字符。所以每个有三个或更多的单词都没关系。
答案 0 :(得分:1)
嗯......完整的真正的解决方案就是这样的:
\b(?!if\b)\p{Ll}+\b
但我认为,好吧,"更高等级"你还没有学习的正则表达式。
所以,让我们保持简单。如果你可以接受忽略少于3个字符的单词,你可以这样写:
\b[a-hj-z][a-eg-z][a-z]+|i[a-z]{2,}
前两个字符类只是[a-z]
,分别没有i
和f
。
如果您想要包含少于3个字符的单词,可以这样做:
\b(?:i|if[a-z]+|i[a-eg-z][a-z]*|[a-hj-z][a-z]*)\b
但此时它变得复杂......
答案 1 :(得分:1)
所有两个或多个小写字母的序列,除了"如果":
[a-hj-z][a-z]+|i(?:[a-eg-z][a-z]*|f[a-z]+)
负面预测,你也可以这样做:
(?!if\b)[a-z]{2,}
答案 2 :(得分:1)
一个简单的解决方案是将您想要忽略的内容放在交替运算符的左侧,并在您尝试时在交替运算符右侧的捕获组中放置您想要匹配的内容。
\bif\b|([a-z]{2,})
注意:字符类之外的插入符^
并不意味着否定,它会在字符串开头处断言位置。除非您使用x
(自由间距)修改器,否则需要删除交替之间的空格。