2

私はJavaでREGEXパターンを使用していました(以下に示します): 作業パターン

文字列の場合: 作業文字列 正常に動作します。しかし、私が以下のパターンを使用しようとしたとき: 非動作パターン

文字列の場合:str =

動作しない文字列 画像のアップロードについて申し訳ありません。a00[]の文字「[]」はブラウザで異なる方法でエンコードされているようです。そのキャラクターを別の方法で読む方法はありますか?同じ文字は、notepad++では異なる表現になります。RXTXとinputStream.read(readBuffer)を使用してデータを読み取ります。これを克服するためにJavaでエンコーディングメソッドを更新する方法はありますか? http://i.imgur.com/sdUjS.jpg i.imgur.com

PS:画像の説明について申し訳ありません-それを入力した場合、私はその文字を表すことができません。その文字をコピーして貼り付けると、空のスペースになります。

4

1 に答える 1

2

奇妙な記号(└)は、ASCII3が一部のフォントでどのように表現されているかを示しています。

正規表現では\b、単語の境界に一致します。つまり、英数字と非英数字の間です。最初のケースでは、一致するサブストリングの前に数字( "9")があり、その直後に感嘆符( "!")があるため(英数字以外の文字)、機能します。

2番目のケースでは、感嘆符を文字に変更したため、英数字から非英数字への遷移はなくなりました。

解決策は、正規表現を拡張して、記号と数字にも一致するようにすることです。

Pattern.compile("(\\x03\\d)(a)\\w*(?=\\x03\\d)");

以前\\x03\\dはコードを一致させていました。最後の部分(?= )は先読みです。一致するかどうかをチェックしますが、消費しません。これはそうなので、連続して複数の一致を行います。


より簡単な代替方法は、「└」で文字列を分割し、それらの部分を調べることです。

s.split("\u0003")
于 2011-12-28T12:14:08.510 に答える