特定字符开头和结尾的正则表达式

4

我正在编写一个正则表达式,用于匹配以 T 开头且以 A 结尾的单词。

我的正则表达式如下:

^T\..*A$

现在我想排除单词TEA。如何使用正则表达式来排除特定单词。

2个回答

2
您好!这段文本的英译如下:

您的正则表达式 ^T\..*A$ 匹配以 T. 开头,然后是任意 0+ 字符(除了换行符之外的所有字符,用 .* 表示),最后以 A 结尾的字符串。

如果要匹配任何以 T 开头,以 A 结尾但不等于 TEA 的字符串,可以使用以下正则表达式:

(?s)^(?!TEA$)T.*A$

为了使其不区分大小写,请添加i修饰符:
(?si)^(?!TEA$)T.*A$

查看正则表达式演示详情
  • (?si) - DOTALL(s)修饰符允许匹配任何字符和IGNORECASE(i)修饰符使模式不区分大小写
  • ^ - 字符串的开头
  • (?!TEA$) - 负向前瞻,如果整个字符串等于TEA,则匹配失败
  • T - T字母
  • .* - 0+个字符,尽可能多
  • A - A字母
  • $ - 字符串的结尾。

请注意,如果您在matches()方法中使用它,则可以删除第一个^和最后一个$


1
如果你想从这个样本中找到“TEA”和“TEEA”,“TEA IS NOT TEEA”。你可以尝试使用这个正则表达式。
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));
}

我正在处理正则表达式,以匹配所有以 T 开头且以 A 结尾的单词。但是必须排除 tea 这个单词。 - pkc456
@pkc456 我编辑了我的回答,请再次检查。 - kimkevin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接