2017-12-07 16 views
3

を終了し、私は私が書くTで始まり、A.正規表現と

で終わる単語の正規表現を書いています: -

^T\..*A$ 

しかし、今、私は言葉を除外したいですTEA。正規表現を使用して特定の単語を除外する方法。

答えて

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)); 
} 
+0

私は 'T'から始まり' A'で終わるすべての単語の正規表現に取り組んでいます。しかし、「茶」の言葉は除外されなければならない。 – pkc456

+0

@ pkc456私は私の答えを編集しました。もう一度これを確認してください。 – kimkevin

1

あなた^T\..*A$正規表現は(.*付き)改行文字以外の任意の0+文字があり、その後Aで終わり、その後、T.で始まる文字列にマッチします。

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

参照:Tで始まり、あなたがi修飾子を追加し、それは大文字と小文字を区別しないようにするには

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

を使用することができTEAと等しくないことAで終わる任意の文字列にマッチさせるために

regex demo

詳細

  • (?si) - DOTALL(s.パターンの大文字と小文字を区別しない
  • ^を作るために、任意の文字とIGNORECASE(i)修飾子と一致することを可能にする改良剤 - 文字列の先頭
  • (?!TEA$) - 文字列全体がTEAの場合は一致しないnegative lookahead
  • TからT
  • .* - 0+文字、など多くの
  • できるだけ Aから A手紙
  • $ - 文字列の末尾。あなたはmatches()方法でそれを使用している場合は、最初と最後の^$を除去することができることを

注意。