私はテキスト別の正規表現の問題
<page a>The cat ran#$(*#(%)#over(*@#$the(*#%
を持っており、スキャナやuseDelimiterメソッドを使用していた場合、どのような正規表現私は抽出することができるようになる。これまでのところ、私が試してみました
<page a>
The
cat
ran
over
the
を:
しかし、角かっこはそのままではありません(明らかに、それは代わりにa-zA-Zに一致します)
私はテキスト別の正規表現の問題
<page a>The cat ran#$(*#(%)#over(*@#$the(*#%
を持っており、スキャナやuseDelimiterメソッドを使用していた場合、どのような正規表現私は抽出することができるようになる。これまでのところ、私が試してみました
<page a>
The
cat
ran
over
the
を:
しかし、角かっこはそのままではありません(明らかに、それは代わりにa-zA-Zに一致します)
問題は区切り記号の1つではなく、トークン認識の1つです。あなたのトークンは以下のとおりです。「エンコーディング
<page a>
The
cat
ran
over
the
区切り文字のセットのどこにでも "<"の文字があると、は返されたトークンにが入りません。あなたは(と私はそれが無効仮定かもしれません実現)<page a>
がどこかに、文字列の先頭で発生することがわかっている場合、あなたはこのような何か行うことができます:明らかに
Scanner s = new Scanner(...);
s.useDelimiter("[^\\w]");
// Find an angle bracket token, if one is next.
String token = s.findInLine("<[^.]*>");
if (token != null)
// process angle bracket token
token = s.next(); // get next delimited token
...
を私がやったけれども、それは(クイックハック試して)。しかし、あなたは簡単にそれを伸ばすことができたと私は思います。
+1。ところで、 'findInLine'はデリミタ(javadocを参照)を無視しますので、' s.useDelimiter( "..") '部分は冗長です。 – rodion
はい、わかっています。しかし、s.useDelimiter()の部分は、区切り文字を 'not \ w'(すなわち、単語以外の文字)に設定するために必要です。それ以外の場合、デフォルトで区切り文字として空白を使用するため、スキャナは区切り文字をスキップしません。 –
また、 '* * 'の代わりに' * *'を使いたいと思うでしょう。 '*'は欲張りです(バーと一気にマッチします。最後の閉じて '>') –
Cameron
あなたは "別の正規表現の質問"ではなく、タイトルであなたの質問を要約するより良い仕事をすることができますか?タイトルが質問を要約するとサイトがより有用になると私は思う。 –