0

以下に似た、文の最初の 3 文字のみに一致する文の正規表現を Java で記述する方法

ins(clear(icl>remove>do,plf>thing,obj>thing,ins>thing).@entry.@past,evidence(icl>indication>thing))

私はこのコードを試しましたが、文のclear,evidenceにも一致します....

String pattern2="[-a-z0-9R:._-`&=*'`~\"\\+[\\s]]+[\\(]";  

Pattern r2 = Pattern.compile(pattern2);
Matcher m2 = r2.matcher(line);


 while (m2.find()) 
 {
     rel = m2.group();
     rel = rel.substring(0, rel.length()-1).trim();                 
     System.out.println("The relation are " + rel); 
 }
4

4 に答える 4

1

この正規表現は、最初の 3 文字に一致します。

^...
于 2013-10-10T13:47:49.097 に答える
1

行の先頭からのみ一致を取得したい場合^は、正規表現の先頭 ( の前[) に追加できます。

前に一致した部分が 3 文字になることを確認したい場合は、but(を使用しないでください。..]+..]{3}

また、いくつかの文字が興味深い部分の後にあるかどうかを確認したいが、それらを含めたくない(?=...)場合は、あなたの場合のように先読みメカニズムを使用する(?=[\\(])か、より簡単に使用します-同時にエスケープする(?=[(])必要はありません。(\\[]

だから多分あなたのパターンを

String pattern2 = "^[-a-z0-9R:._-`&=*'`~\"+\\s]{3}(?=[(])";

また、と_-`の間の文字の範囲を作成するため、あなたが意味するものかどうかはわかりません_`

于 2013-10-10T13:47:10.940 に答える