特定字符开始和结束的正则表达式

时间:2017-12-07 17:39:25

标签: android regex string

我正在为以T开头并以A结尾的单词编写正则表达式。

我写道: -

^T\..*A$

但现在我要排除TEA这个词。如何使用正则表达式排除特定单词。

2 个答案:

答案 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));
}