我正在为以T开头并以A结尾的单词编写正则表达式。
我写道: -
^T\..*A$
但现在我要排除TEA
这个词。如何使用正则表达式排除特定单词。
答案 0 :(得分:2)
您的^T\..*A$
正则表达式匹配以T.
开头的字符串,然后除了换行符(.*
之外)有任何0 +字符,然后以A
结尾
要匹配任何以T
开头且以A
结尾且不等于TEA
的字符串,您可以使用
(?s)^(?!TEA$)T.*A$
要使其不区分大小写,请添加i
修饰符:
(?si)^(?!TEA$)T.*A$
请参阅regex demo。
<强>详情
(?si)
- DOTALL(s
)修饰符,允许.
匹配任何char和IGNORECASE(i
)修饰符,使模式不区分大小写^
- 字符串开头(?!TEA$)
- negative lookahead如果整个字符串等于TEA
T
- T
.*
- 0+字符,尽可能多A
- A
来信$
- 字符串结束。请注意,如果您使用matches()
方法,则可以删除第一个^
和最后一个$
。
答案 1 :(得分:1)
如果你想找到TEA&#39;和&#39; TEEA&#39;从这个样本中,“TEA IS TEEA&#39;”。您可以尝试使用此正则表达式。
Pattern p = Pattern.compile("((T|t)[A-Za-z]+(A|a))");
Matcher m = p.matcher("TEA or tea IS NOT TEEA or teea");
while(m.find()) {
System.out.println(m.group(1));
}